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';
});
}