Php Laravel 4.2-使用::firstOrCreate并确定实际发生了什么?
在Laravel 4.2中使用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
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已提取。。。
}
“将返回这些记录”。否。将返回第一个记录。不是收藏。哦,好的。我懂了。在我写下问题后,我想到了这一点,但我不确定。我想这就是第一个的意思:)谢谢。这将是有帮助的。