阅读(4638) (8)

Laravel 8 Default Models

2021-07-08 09:44:51 更新

belongsTohasOnehasOneThroughmorphOne 关系允许你指定默认模型,当给定关系为 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';
    });
}