文档里
// 以属性找用户,若没有则新增并取得新的实例$user = User::firstOrCreate(['name' => 'John']);
如果不存在只能插入name字段
如果是判断name=john的不存在就插入['name' => 'John','age'=>20]
呢怎么处理?
文档里
// 以属性找用户,若没有则新增并取得新的实例$user = User::firstOrCreate(['name' => 'John']);
如果不存在只能插入name字段
如果是判断name=john的不存在就插入['name' => 'John','age'=>20]
呢怎么处理?
// 通过name属性检索航班,当结果不存在时创建它...
$flight = App\Flight::firstOrCreate(['name' => 'Flight 10']);
// 通过name属性检索航班,当结果不存在的时候用name属性和delayed属性去创建它
$flight = App\Flight::firstOrCreate(
['name' => 'Flight 10'], ['delayed' => 1]
);
$users = User::where('name',john)->first();
if(!$users) $users = new Users;
$users->age=20;
$resQuery= users->save();
楼上的经本人测试,不管是什么情况都是更新,并达不到新建的目的。然后我研究了半天重新写的,亲测有效,希望后面的人看到了能够少走弯路
/**
* Get the first record matching the attributes or create it.
*
* @param array $attributes
* @return static
*/
public static function firstOrCreate(array $attributes)
{
if (! is_null($instance = static::where($attributes)->first())) {
return $instance;
}
return static::create($attributes);
}
上面这段源码完美解释
2 回答2.5k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
1 回答1.5k 阅读✓ 已解决
1 回答837 阅读✓ 已解决
912 阅读
1 回答670 阅读
1 回答667 阅读
如果你是所有人不存在都插入age=20,而不论是john、Lena,也或者是其他的什么人,那么采用属性修改器
如果是每个人都不同的话,可以用updateOrCreate,即