Laravel:hasMany关系+条件失败

时间:2019-02-08 00:13:51

标签: mysql laravel laravel-5 eloquent

我有一个Customer雄辩的模特。 Customer可以有多个WishLists,他/她可以在其中添加一些产品。典型的电子商务功能。

重点是Customer可以属于许多Users模型。

这很简单:

public function users()
{
    return $this->belongsToMany(User::class, 'users_sync_customers', 'customer_uuid', 'user_id')
        ->withTimestamps()
        ->orderBy('last_name', 'asc');
}

因此,我可以将所有Customers分配给登录用户,

auth()->user()->customers

正如我提到的,Customer可以有多个Wishlists

public function wishLists()
{
    return $this
        ->hasMany(WishList::class, 'customer_uuid', 'uuid')
        ->where('user_id', '=', auth()->user()->id); // <----- this will fail when I log out
}

但是WishList的作用域是客户UUID 用户ID。

enter image description here

以上关系有效,但仅当我明显登录时有效。

我注销auth()->user()->is就是NULL并得到:

  

ErrorException {#1483 #message:“试图获取属性'id'的   非对象”

问题:如何在wishLists()中引用user_id值?

WishList模型具有以下特点:

public function user()
{
    return $this->belongsTo(User::class, 'user_id', 'id');
}

那么我可以使用$this->user->id之类的东西吗?

编辑:

不,这也不起作用。

enter image description here

1 个答案:

答案 0 :(得分:0)

您必须检查用户是否已登录?

Auth::check() ? Auth::user()->id : null