如何使用laravel将额外数据添加到create方法中

时间:2018-03-09 02:36:41

标签: laravel-5

public function store(Request $request) {
  $user = Book::create([
    'user_id' => auth()->id(),
    'name => $request->name,
    'year => $request->year
 )];
}

上面的代码可以存储到数据库中。

我想知道如何在下面添加以下额外数据。 我发现合并不起作用,因为它不是集合。 试图连锁,但没有工作。

public function data() {
  $array = [
      'amount' => 30,
      'source' => 'abcdef',
  ];

  return $array;
}

1 个答案:

答案 0 :(得分:0)

您可以在模型中捕获创建事件。 这段代码可以帮到你。

/**
 * to set default value in database when new record insert
 *
 */
public static function bootSystemTrait()
{
    static::creating(function ($model) {
        $model->amount = 30;
    });
}

您可以将此代码写入模型中。每次使用Laravel模型创建记录时都会执行。

如果要修改它,可以将属性用于Model类。像这样:

class TestClass extends Model
{
    public static $amount = 0;

    static::creating(function ($model) {
          $model->amount = self::$amount;
    });
}

祝你好运。