如何使用 tinker 在 laravel 模型中查找反向关系

How to find inverse relationship in laravel models using tinker

我知道了class

namespace App;

use Illuminate\Database\Eloquent\Model;

class RetailerInfo extends Model
{

    public function user()
    {
        //same as retailer() but more consistent
        return $this->belongsTo(User::class, 'retailer_id');
    }

    public function store()
    {
        return $this->belongsTo(Store::class);
    }
}

查找属于商店的零售商工作正常:

>>>namespace App;
>>>Store::find(2)->RetailerInfo
=> App\RetailerInfo {#1144
     id: 1,
     retailer_id: 65,
     store_id: 2,
     created_at: "2016-07-16 09:47:43",
     updated_at: "2016-07-16 09:47:43",
   }

但无法找到商店所属的用户:

>>> RetailerInfo::find(1)->belongsTo(User::class)
=> Illuminate\Database\Eloquent\Relations\BelongsTo {#1176}
>>> RetailerInfo::find(1)->belongsTo(User::class, 'retailer_id')

如何让它发挥作用?

正如documentation所说,你只需要在模型的一个方法中声明一次关系

你用这个例子做了什么

RetailerInfo::find(1)->belongsTo(User::class);

不正确,因为您没有在旅途中声明关系。

而是使用您已经在模型中声明的关系(StoreRetailerInfo 有关系,并且 RetailerInfo 已经与 User 有关系)

Store::find(2)->RetailerInfo->user;