我很难掌握Laravel在这里尝试沟通的内容以及Eloquent如何建立/附加这些关系。
Property [owner] does not exist on this collection instance.
我创建了一个客户支持收件箱,客户可以在其中发送票证,管理员可以回复。
我希望能够提起这个名字&消息中的用户的一些细节,所以,代表知道他们正在与谁交谈。目前有三个表:tickets, users, & replies
。我也打破了这里的结构:
Tickets: id, user_id, body, active (boolean), datestuff... | relates to the Ticket model
replies: id, user_id, ticket_id, body, datestuff | relates to the Reply model.
我已通过$this->belongsTo(User::class,'user_id');
owner
的故障单模型中定义了这种关系
public function owner()
{
// ESTABLISH RELATIONSHIP
$this->belongsTo(User::class, 'user_id');
}
但是当我尝试检索下面的内容时,我会检索标题中的错误。来自TicketsController
$tickets = Ticket::latest()->get();
return $tickets->owner;
我无法{{ $ticket->owner->first_name }}
或我想提及的任何有关用户的详细信息。
我对Eloquent的基本理解是不正确还是还需要分配其他东西以启用此功能?
我跟随Laracast的这一集一直在用Thread for Ticket代替,但是回复命名空间仍然存在。虽然我没有检索与回复相关联的用户数据,而是检索初始票证的用户数据。
https://laracasts.com/series/lets-build-a-forum-with-laravel/episodes/3
答案 0 :(得分:1)
$tickets = Ticket::latest()->get();
return $tickets->owner;
此代码获取了集合的故障单。 该集合中的每个故障单都有拥有所有者。
foreach($tickets as $ticket) {
// this is where you have $ticket->owner;
}
你的owner()
函数也没有返回关系 - 它会创建一个,但不会对它做任何事情。这个工作:
public function owner() {
return $this->belongsTo(User::class, 'user_id');
}