我的库存表格中有两列quantity
和remaining_quantity
。我想在执行创建功能时将相同的数据从quantity
复制到remaining_quantity
。 Laravel中是否有任何功能?
答案 0 :(得分:0)
你可以通过创建一个观察者来做到这一点。
1-在observers
文件夹中创建一个名为app
的文件夹。
2-创建名为MyModelObserver.php
的文件,例如StockObserver.php
。
3-按以下方式准备课程:
<?php
namespace App\Observers;
class StockObserver
{
//
}
在该课程中,您可以创建creating
,created
,updated
,updated
,deleting
,deleted
,saving
和saved
方法。他们的工作从他们的名字中显而易见。
有关详细信息,请参阅=&gt; https://laravel.com/docs/5.5/eloquent#events
例如,每次创建Stock
模型的对象时,以下代码都会执行某些操作。
<?php
namespace App\Observers;
use App\Stock;
class StockObserver
{
public function created(Stock $stock)
{
$stock->remaining_quantity = $stock->quantity;
$stock->save()
}
}
但是除非您在AppServiceProvide
中观察到这些代码,否则所有这些代码都无效。因此boot
中的AppServiceProvider
方法会写下以下内容。
\App\Stock::observe(\App\Observers\StockObserver::class);
就是这样..希望它有所帮助。
答案 1 :(得分:0)
是的,有几种不同的方法可以做到这一点。一个简单,肮脏的方法就是只有两个查询,
$quantity = StockTable::find($id);
StockTable::create([
'remaining_quantity' => $quantity->quantity
]);
因此,您获取要复制的记录,然后将其设置为创建记录中的剩余数量。