如何在 Laravel 5.4 中使用 firstOrCreate 中的 where

问题描述 投票:0回答:3

我如何使用这样的代码:

 $db = ModelName::firstOrCreate(['bot_id'=>10, 'bot_text'=>$botTxt->id])
->where('updated_at','<=', Carbon::today());

这无法正常工作。

php laravel model laravel-5.3 eloquent
3个回答
5
投票

正确的语法是:

ModelName::where('updated_at','<=', Carbon::today())
    ->firstOrCreate(['bot_id' => 10, 'bot_text' => $botTxt->id]);

此外,由于

firstOrCreate()
使用批量分配功能,请确保您已在
$fillable
类中定义了
ModelName
属性:

protected $fillable = ['bot_id', 'bot_text'];

0
投票

您还可以在firstOrCreate方法的第一个参数中传递条件,如下所示:

 $db = ModelName::firstOrCreate([
    ['updated_at','<=', Carbon::today()],
    'bot_id'=>10, 
    'bot_text'=>$botTxt->id
 ]);

0
投票
 $db = ModelName::firstOrCreate(
    [
        'updated_at' => Carbon::today()
    ],
    [
        'bot_id' => 10, 
        'bot_text' => $botTxt->id
    ]
 );
© www.soinside.com 2019 - 2024. All rights reserved.