Laravel 8 Default Models
belongsTo
,hasOne
,hasOneThrough
和 morphOne
关系允许你指定默认模型,当给定关系为 null
时,将会返回默认模型。 这种模式被称作 空对象模式 ,可以减少你代码中不必要的检查。在下面的例子中,如果发布的帖子没有找到作者, user
方法会返回一个空的 App\Models\User
模型:
/**
* 获取帖子的作者
*/
public function user()
{
return $this->belongsTo('App\Models\User')->withDefault();
}
如果需要在默认模型里添加属性, 你可以传递数组或者回调方法到 withDefault
中:
/**
* 获取帖子的作者
*/
public function user()
{
return $this->belongsTo('App\Models\User')->withDefault([
'name' => 'Guest Author',
]);
}
/**
* 获取帖子的作者
*/
public function user()
{
return $this->belongsTo('App\Models\User')->withDefault(function ($user, $post) {
$user->name = 'Guest Author';
});
}