【问题标题】:Add data to two tables using one controller使用一个控制器将数据添加到两个表
【发布时间】:2021-06-14 21:22:46
【问题描述】:

我正在使用 react.js 和 Laravel 做一个项目。单击按钮后,我需要将数据保存在两个表中。我在数据库中有两个表,分别是 aproduct_sc 和 shopping_cart。我需要使用一个控制器和一个函数将数据插入到上面的两个表中。因为,我为此使用了一个 API。

我使用的 ShoppingCart 控制器,

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\ShoppingCart;
use App\Models\Customer;
use App\Models\AProduct;
use App\Models\AProductSC;

class ShoppingCartController extends Controller
{
   function addScart(Request $req)
   {
    $shoppingcart=new ShoppingCart;
    $shoppingcart->cust_id=$req->input('cust_id');
    $shoppingcart->save();
    return $shoppingcart; 

    $aproductsc=new AProductSC;
    $aproductsc->quantity=$req->input('quantity');
    $aproductsc->aprice=$req->input('aprice');
    $aproductsc->scart_id=$req->input('scart_id');
    $aproductsc->aproduct_id=$req->input('aproduct_id');
    $aproductsc->save();
    return $aproductsc;
   }
}

我使用的 ShoppingCart 模型,

 <?php

 namespace App\Models;

 use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;

class ShoppingCart extends Model
{
   use HasFactory;
   protected $primaryKey = 'scart_id';
}

我使用的 Aproductsc 模型,

 <?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class AProductSC extends Model
{
  use HasFactory;
}

我使用的 API,

Route :: post('addScart',[ShoppingCartController::class,'addScart']);

我使用 Postman 对此进行了测试,它显示“未找到”的错误。我该如何解决这个问题?

感谢您的帮助!

【问题讨论】:

  • 首先,在你的addScart方法中,第一个return之后的代码不会被执行,所以删除或者注释掉这一行。你有404 NotFound 或其他什么吗?

标签: php reactjs laravel postman


【解决方案1】:

根据您提供的代码,语法错误。

来自Route :: post('addScart',[ShoppingCartController::class,'addScart']);

改成

Route::post('addScart',[ShoppingCartController::class,'addScart']);

还有一些改进代码的建议。如果您必须处理多个模型,请使用repositories。考虑尽可能干净地重命名变量和文件。此外,您的主键只需调用它id,您不必覆盖它。

【讨论】:

  • 还是 404 吗?你打电话给邮递员的是哪个端点?如果您在 api.php 中注册了您的路线,您需要在之前添加 /api
  • 我认为我的“addScart 函数”应该有错误,因为我不太确定那个编码。
  • 你能弄清楚吗?
  • 使用公共函数 addScart () 能否请您提供有关该错误的更多信息,因为我不知道是怎么回事
  • 我在数据库中有两个表,分别是 aproduct_sc 和 shopping_cart。单击名为“添加到购物车”的按钮后,aproduct_sc 和 shopping_cart 表都应该填满。
【解决方案2】:

除了上面的建议,在一个函数中返回两次对我来说有点奇怪
我建议你使用 DB::transaction() 来控制你的数据库插入

【讨论】:

    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多