我遇到了一种情况,即只有在给定用户ID不存在复合列值的情况下才必须插入记录;
之类的东西UsersInvited::firstOrCreate([
'invited_by_id'=>$eventDetails->user_id,
function($query) use ($thisEmail,$thisPhone){
return $query->where('email',$thisEmail)->orWhere('phone',$thisPhone);
}
]);
如果user_id = 3是事件的邀请者而某些成员未在门户中注册,则他们必须保留在一个表中,以便将来如果受邀用户将安装该应用程序,那么我必须自动将其设为活动成员。
任何其他用户也可以多次邀请相同的成员。
所以在上面的例子中,我想检查thisEmail = abc@gmail.com是否被user_id = 3邀请,或者thisPhone = 8945454545被同一个邀请者邀请,然后无需输入。
是否有可能在laravel中 - 雄辩的第一次创造()?
答案 0 :(得分:0)
使用代码获取方法firstOrCreate():
public function firstOrCreate(array $attributes, array $values = [])
因此:您无法将额外的查询参数附加到此方法。
在您的情况下,您应该尝试自己找到匹配的记录。如果它不存在,您可以创建一个。例如:
$attributes = ['invited_by_id' => '..'];
$instance = Model::where($attributes)->where(..)->orWhere(..)->first();
if( is_null ( $instance ) ) {
$instance = Model::create($attributes);
}
祝你好运!