Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 4.2-使用::firstOrCreate并确定实际发生了什么?_Php_Laravel_Eloquent - Fatal编程技术网

Php Laravel 4.2-使用::firstOrCreate并确定实际发生了什么?

Php Laravel 4.2-使用::firstOrCreate并确定实际发生了什么?,php,laravel,eloquent,Php,Laravel,Eloquent,在Laravel 4.2中使用Model::first或create时,是否有办法知道发生了什么、最先发生了什么或创建了什么 让我解释一下,,,我的理解是,如果记录不存在或返回了包含参数数组数据的记录值,则使用::firstOrCreate创建记录 所以如果我有这样的东西: // Auth::user()->id; returns 7 $person = Persons::firstOrCreate(array( 'approver' => 123, 'receiv

在Laravel 4.2中使用
Model::first或create
时,是否有办法知道发生了什么、最先发生了什么或创建了什么

让我解释一下,,,我的理解是,如果记录不存在或返回了包含参数数组数据的记录值,则使用::firstOrCreate创建记录

所以如果我有这样的东西:

// Auth::user()->id; returns 7

$person = Persons::firstOrCreate(array(
    'approver' => 123,
    'receiver' => Auth::user()->id,
    'plan' => 'gold',
));
我有这些记录

  approver | receiver  |  plan
____________________________________
    123    |     7     |  silver
____________________________________
    128    |     7     |  gold
____________________________________
    123    |     7     |  platinum
____________________________________
然后将创建一个新记录

  approver | receiver  |  plan
____________________________________
    123    |     7     |  silver
____________________________________
    128    |     7     |  gold
____________________________________
    123    |     7     |  platinum
____________________________________
    123    |     7     |  gold
____________________________________
如果我再次运行上述代码,那么将不会创建新值,并且将返回此记录

  approver | receiver  |  plan
____________________________________

    123    |     7     |  gold
____________________________________
  approver | receiver  |  plan
____________________________________
    123    |     7     |  silver
____________________________________
    123    |     7     |  platinum
____________________________________
    123    |     7     |  gold
____________________________________
但是如果我的代码是这样的

$person = Persons::firstOrCreate(array(
    'approver' => 123,
    'receiver' => Auth::user()->id
));

这些记录将被退回

  approver | receiver  |  plan
____________________________________

    123    |     7     |  gold
____________________________________
  approver | receiver  |  plan
____________________________________
    123    |     7     |  silver
____________________________________
    123    |     7     |  platinum
____________________________________
    123    |     7     |  gold
____________________________________
如果我对::first或create的理解不正确,请帮助我更好地理解它


正如我所提到的,我很想知道是否有办法确定是否创建了新记录?

该模型有一个
wasnrecentlycreated
属性:

$person=Persons::firstOrCreate([
“批准人”=>123,
“接收器”=>auth()->id(),
“计划”=>“黄金”,
]);
如果($person->wasnentlycreated){
//$person已创建
}否则{
//$person被抓获
}
对于较旧版本的Laravel,您可以使用
firstOrNew

$person=Persons::firstOrNew([
“批准人”=>123,
“receiver'=>Auth::user()->id,
“计划”=>“黄金”,
]);
如果(!$person->id){
$person->save();
//$person已创建。。。
}否则{
//$person已提取。。。
}

“将返回这些记录”。否。将返回第一个记录。不是收藏。哦,好的。我懂了。在我写下问题后,我想到了这一点,但我不确定。我想这就是第一个的意思:)谢谢。这将是有帮助的。