从一个控制器对两个表进行操作的最佳实践 Laravel PHP
The best practice to do operations on two tables from one controller Laravel PHP
我想知道在一个控制器中使用两个模型是否是一种不好的做法。
我有两个table:sold 和 warehouse。
仓库包含可供销售的物品和数量,例如“键盘 XYZ”数量:195
已售出包含来自客户的订单,例如买家:John Smith,产品:键盘 XYZ
我的问题是,在 SoldController 的一个函数中,我向已售 table 添加了一个新订单,我还需要从仓库 table 中减去数量。
最好的方法是什么?
我读到在 SoldController 中从 WarehouseController 调用函数 subtractQuantity 是不好的做法 -
WarehouseController::subtractQuantity($id) 在 SoldController 函数中(从一个控制器调用另一个控制器的函数)
我应该在 SoldController 中使用 WarehouseModel 吗? (所以基本上在一个控制器中使用两个模型)
使用特质? (还不是很熟悉)
您可以创建一个单独的服务 class 来处理您业务逻辑中的这种横切关注点,并将该服务注入您 SoldController
。
服务,调用它 SalesService
,然后将执行实际销售,是否将记录添加到 sold
table 并从仓库中减去数量。
在您的控制器中使用这两种模型:
namespace App\Http\Controllers;
use App\Sold;
use App\Warehouse;
class SoldController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function insert()
{
$sold = new Sold;
$sold->field_one = $request->field_one;
$sold->field_two = $request->field_two;
$sold->save();
$warehouseItem = Warehouse::find($some_id);
//and do the rest
}
}
我想知道在一个控制器中使用两个模型是否是一种不好的做法。
我有两个table:sold 和 warehouse。
仓库包含可供销售的物品和数量,例如“键盘 XYZ”数量:195
已售出包含来自客户的订单,例如买家:John Smith,产品:键盘 XYZ
我的问题是,在 SoldController 的一个函数中,我向已售 table 添加了一个新订单,我还需要从仓库 table 中减去数量。
最好的方法是什么?
我读到在 SoldController 中从 WarehouseController 调用函数 subtractQuantity 是不好的做法 - WarehouseController::subtractQuantity($id) 在 SoldController 函数中(从一个控制器调用另一个控制器的函数)
我应该在 SoldController 中使用 WarehouseModel 吗? (所以基本上在一个控制器中使用两个模型)
使用特质? (还不是很熟悉)
您可以创建一个单独的服务 class 来处理您业务逻辑中的这种横切关注点,并将该服务注入您 SoldController
。
服务,调用它 SalesService
,然后将执行实际销售,是否将记录添加到 sold
table 并从仓库中减去数量。
在您的控制器中使用这两种模型:
namespace App\Http\Controllers;
use App\Sold;
use App\Warehouse;
class SoldController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function insert()
{
$sold = new Sold;
$sold->field_one = $request->field_one;
$sold->field_two = $request->field_two;
$sold->save();
$warehouseItem = Warehouse::find($some_id);
//and do the rest
}
}