在 Laravel 中将数据从一个数据库列克隆到另一个数据库列
Clone data from one to another database column in Laravel
我的股票 table 中有两列 quantity
和 remaining_quantity
。我想在执行创建功能时将相同的数据从 quantity
复制到 remaining_quantity
。 Laravel 中有什么功能吗?
您可以通过创建一个观察者来做到这一点。
1- 在 app
文件夹中创建一个名为 observers
的文件夹。
2- 创建一个名为 MyModelObserver.php
的文件,例如 StockObserver.php
.
3- 像下面这样准备你的 class:
<?php
namespace App\Observers;
class StockObserver
{
//
}
在 class 中你可以创建 creating
、created
、updated
、updated
、deleting
、deleted
, saving
和 saved
方法。从他们的名字中可以看出他们的工作。
有关详细信息,请参阅 => 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
中观察到这一点 .. 所以在 AppServiceProvider
的 boot
方法中写下以下内容。
\App\Stock::observe(\App\Observers\StockObserver::class);
就是这些..希望对您有所帮助。
是的,有几种不同的方法可以做到这一点。一种简单而肮脏的方法是只进行两个查询,
$quantity = StockTable::find($id);
StockTable::create([
'remaining_quantity' => $quantity->quantity
]);
所以你抓取你要复制的记录一点,然后把它设置为你创建记录上的剩余数量。
我的股票 table 中有两列 quantity
和 remaining_quantity
。我想在执行创建功能时将相同的数据从 quantity
复制到 remaining_quantity
。 Laravel 中有什么功能吗?
您可以通过创建一个观察者来做到这一点。
1- 在 app
文件夹中创建一个名为 observers
的文件夹。
2- 创建一个名为 MyModelObserver.php
的文件,例如 StockObserver.php
.
3- 像下面这样准备你的 class:
<?php
namespace App\Observers;
class StockObserver
{
//
}
在 class 中你可以创建 creating
、created
、updated
、updated
、deleting
、deleted
, saving
和 saved
方法。从他们的名字中可以看出他们的工作。
有关详细信息,请参阅 => 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
中观察到这一点 .. 所以在 AppServiceProvider
的 boot
方法中写下以下内容。
\App\Stock::observe(\App\Observers\StockObserver::class);
就是这些..希望对您有所帮助。
是的,有几种不同的方法可以做到这一点。一种简单而肮脏的方法是只进行两个查询,
$quantity = StockTable::find($id);
StockTable::create([
'remaining_quantity' => $quantity->quantity
]);
所以你抓取你要复制的记录一点,然后把它设置为你创建记录上的剩余数量。