我有一个问题,我无法用文档解决。
我想在两个用户之间创建一个非常简单的对话系统。
我有3个模型和表:
用户id、名称
会话
id
消息
id,user_id,conversation_id,内容
因此,一条消息属于一个用户和一个对话,但我希望对话属于多个用户。
我不知道怎么用桌子做这个。如果我在对话表中创建一个user\u id
字段,我不能有多个用户。。。
首先,我会有以下三张表:
用户
身份证,姓名
对话用户
用户id、消息id
消息
id,内容
让我们来处理好关系。
在用户模型中:
public function conversations()
{
return $this->belongsToMany(Message::class,'conversation_user','user_id','message_id');
}
在消息模型中:
public function users()
{
return $this->belongsToMany(User::class,'conversation_user','message_id','user_id');
}
现在你可以这样称呼这种关系:
$user = Auth::user();
$user->conversations();
这肯定在文档中
不管怎样。你在寻找一种多对多的关系。为此,您需要一个数据透视表(或连接表),其中包含用户的id和对话的id。
按照Laravel约定,此表将被称为conversation\u user
,并将包含id
(主键)、conversation\u id
和user\u id
如果你有,你可以这样定义关系:
public function conversations(){
return $this->belongsToMany('Conversation');
}
public function users(){
return $this->belongsToMany('User');
}
$user = User::find(1);
$conversations = $user->conversations;
如本文所述,在将模型插入多对多关系时,应使用attach()
$conversation = new Conversation;
$conversation->users()->attach($idUser1);
$conversation->users()->attach($idUser2);
// or just pass an array of ids
$conversation->users()->attach(array($idUser1, $idUser2));
我在两个表之间有一个关系,其中一个联接表只有一个结果。 当我定义一个Laravel-BelongToMany关系时,我希望它单独返回该项,而不是只返回一个元素的集合。 有没有一种方法可以在Laravel中对此进行建模? 提前感谢。 [编辑] 我将尝试使用经典的用户/角色示例来解释我想要什么。除了de和表之外,我们还有一个pivot表,它将存储用户拥有的所有角色。用户在任何给定时间只能有一个活动角色
因此,我通过透视表在用户和照片之间建立了许多对许多的关系。我在我的用户模型中使用。然而,这里的问题是,我的照片表中有十几列我不需要(尤其是在json响应期间)。所以一个例子是: 是否可以修改此方法,使model只返回接受的列(例如由数组指定的列)? 注意:我只想在执行时选择特定的列。在执行之类的操作时,是的,我希望所有列都像往常一样。 编辑:我尝试在Laravel Eloquent中使用“with
我对用户和资源有很多关系。 用户: 资源: 中间表是。与: 我获取资源用户表中用户id所在的所有资源。到现在为止,一直都还不错。但是,即使中间表中不存在用户id,如何获取所有资源条目呢?假设我在资源表中有3个资源。Id 1、2和3。我有一个ID为1的用户。在中间表中,我只有两行: resource_id1和user_id1和值50。 resource_id2和user_id1和值100。 但是我想
我正在学习拉威尔,有一件事我无法解决。 我有什么: 用户、帖子、评论及相应模型表 使用者php:
我是Laravel5.2的新手,正在开发一个遗留系统,对雄辩有点困惑,希望有人能给我代码。 共有3个表格: 卡片类别卡片2类 卡片可以是许多类别的一部分,这些类别保存在cards2cat表中。 cards2cat表的结构如下 id(主键)图像(卡)类别 我想做的是在Cards模型中有一个方法,名为getCardsWithCategors,它返回Cards信息和category表中类别的名称。 ca
我有三张桌子: 类别(id、名称) 类别赛(类别赛id,锦标赛id)-- Category是可用类别列表Category_Tornament是管理员配置的类别列表Category_Tornament用户是用户已注册的类别 要获得锦标赛中的所有类别,我可以使用以下工具轻松完成: 在竞赛模型中定义归属关系 我不知道如何定义与上一个表的关系。 我需要的是用户单击几个类别,我可以运行如下操作: 我应该在哪