如何使用with运算符改进Laravel代码?

Dar*_*ama 0 laravel laravel-5.4

在我对DB的请求中,我使用Laravel的模型和功能with如下:

$user = User::with("city")->get();
Run Code Online (Sandbox Code Playgroud)

问题是如果要在模板中执行以下操作:

{{$user->city()->name}}
Run Code Online (Sandbox Code Playgroud)

只有当用户指定了city时才会起作用,因此数据库表中存在value.否则返回错误:

如何摆脱多余的检查,如:

@if(isset($user->city()->name))
   {{$user->city()->name}}
@endif
Run Code Online (Sandbox Code Playgroud)

这真是太棒了!

Jos*_*ber 5

在模型上定义关系时,请使用以下withDefault方法:

class User extends Model
{
    public function city()
    {
        return $this->hasOne(City::class)->withDefault();
    }
}
Run Code Online (Sandbox Code Playgroud)

有了这个,$user->city将永远返回一个City模型.