如何使用 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);
不正确,因为您没有在旅途中声明关系。
而是使用您已经在模型中声明的关系(Store
与 RetailerInfo
有关系,并且 RetailerInfo
已经与 User
有关系)
Store::find(2)->RetailerInfo->user;
我知道了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);
不正确,因为您没有在旅途中声明关系。
而是使用您已经在模型中声明的关系(Store
与 RetailerInfo
有关系,并且 RetailerInfo
已经与 User
有关系)
Store::find(2)->RetailerInfo->user;