Laravel 5 如何从用户模型返回接收方和发送方对象
我正在构建一个应用程序,它有一个用于用户间聊天的部分。当然,我有一个用于users表的用户模型和一个用于消息的聊天模型。在聊天模型中,我与用户模型有一个belongsTo关系,在用户模型中有一个对应的hasmall关系。chats表包含发送者id、接收者id和消息列 型号:Laravel 5 如何从用户模型返回接收方和发送方对象,laravel-5,Laravel 5,我正在构建一个应用程序,它有一个用于用户间聊天的部分。当然,我有一个用于users表的用户模型和一个用于消息的聊天模型。在聊天模型中,我与用户模型有一个belongsTo关系,在用户模型中有一个对应的hasmall关系。chats表包含发送者id、接收者id和消息列 型号: class User extends Model { function chat(){ return $this->hasMany(Chat::class); } } class Ch
class User extends Model {
function chat(){
return $this->hasMany(Chat::class);
}
}
class Chat extends Model {
function user(){
return $this->belongsTo(User::class);
}
/*** columns ***/
/* sender_id
* receiver_id
* message
*/
}
在这之前我都很好。但是,在控制器中,当聊天记录保存在表中时,我尝试使用在聊天模型中创建的关系返回聊天记录的响应,其中包括发送者和接收者对象,但始终只获取发送者对象。我还尝试在聊天模式上使用访问器,如下所示:
公共函数getReceiverAttribute(){
$receiver=User::find($this->receiver_id)->first();
返回$receiver;
}
然后将其附加到返回的聊天记录中。
但我一直在获取发送者对象。我希望我能清楚地表达这个问题?
如何获取接收器对象
注意:请注意,我是通过手机发送的,因此可能格式不正确。您可能希望在聊天模式中分离您的关系,如下所示:
class Chat extends Model {
/*function user(){
return $this->belongsTo(User::class);
}*/
function sender(){
//tell the relationship which column they are related on on that table
return $this->belongsTo(User::class, 'sender_id');
}
function receiver(){
//same applies here
return $this->belongsTo(User::class, 'receiver_id');
}
}
用户模型也是如此
class User extends Model {
/*function chat(){
return $this->hasMany(Chat::class);
}*/
function senderChat(){
return $this->hasMany(Chat::class, 'sender_id'); //specify in both models just in case
}
function receiverChat(){
return $this->hasMany(Chat::class, 'receiver_id');
}
}
我相信这会对你有用,你只需从
聊天
对象中调用这些关系你介意告诉我们你是如何保存聊天的吗?$Chat=newchat$聊天->发件人_id=Auth::id()$聊天->接收者id=$request->id$聊天->消息=$request->消息$聊天->保存();然后,我发布的关于分离发送者
和接收者
的答案应该适合你。模型必须了解这些关系