У меня есть три модели:
User
Order
UserInfo
В модели пользователя:
/* Attribute to set primary user */
protected $primaryKey = 'user_id';
public function userInfo()
{
return $this->hasOne('App\Models\Users\UserInfo', 'user_id');
}
public function orders()
{
return $this->hasMany('App\Models\Orders\Order', 'user_id');
}
В модели заказов:
// Set table
protected $table = 'orders';
// Set timestamps
public $timestamps = true;
// Set primary key
protected $primaryKey = 'order_id';
// Set mass assignable columns
protected $fillable = [];
// Manys orders can belong to one user
public function user()
{
return $this->belongsTo('App\Models\Users\User', 'user_id');
}
В модели UserInfo:
// Set table
protected $table = 'user_infos';
// Set timestamps
public $timestamps = true;
// Set primary key
protected $primaryKey = 'user_id';
// Set mass assignable columns
protected $fillable = [];
/**
* Get the user info associated with the user.
*/
public function user()
{
return $this->belongsTo('App\Models\Users\User', 'user_id');
}
В каждой их таблице есть общий столбец с именем user_id
, в который я буду обращаться через модель заказа с идентификатором пользователя, чтобы сопоставить его с моделью пользователя и получить имя из информации о пользователе.
Я пытался получить его с помощью Order::all()->user->userInfo->name->get()
, но там написано Exception with message 'Property [user] does not exist on this collection instance.'
Что я сделал не так?