我正在使用laravel创建一个消息传递应用程序。我使用了四次迁移(用户,对话,会话成员和对话)。我还定义了模型之间的关系。
用户的详细信息将存储在users表中。对话ID将存储在对话表中。每次谈话都会有成员。成员的详细信息将存储在conversationsmember表中,最后回复将存储在conversationsreply表中。
现在我试图显示特定用户的所有对话(我在User和ConversationMembers模型之间使用了hasManyThrough关系),但它不起作用。
以下是详细信息:
用户迁移:
$table->increments('id');
$table->string('name', 32);
$table->string('username', 32);
$table->string('email', 320);
$table->string('password', 64);
$table->timestamps();
对话迁移:
$table->increments('id');
$table->timestamps();
conversationsmembers migration:
$table->increments('id');
$table->integer('conversation_id');
$table->integer('user_id');
$table->timestamps();
conversationsreply migrations
$table->increments('id');
$table->integer('conversation_id');
$table->integer('user_id');
$table->timestamps();
用户模型: 我已将这些方法添加到默认用户模型
public function conversations()
{
return $this->hasManyThrough('Conversation', 'ConversationsMember', 'conversation_id', 'id');
}
public function conversationsMember(){
return $this->hasMany('ConversationsMember', 'user_id', 'id');
}
public function conversationsReply(){
return $this->hasMany('ConversationsReply', 'user_id', 'id');
}
会话模型
class Conversation extends Eloquent{
public function conversationsMember(){
return $this->hasMany('ConversationsMember', 'conversation_id', 'id');
}
public function conversationsReply(){
return $this->hasMany('ConversationReply');
}
}
ConversationsMember模型
class ConversationsMember extends Eloquent{
protected $fillable = array('conversation_id', 'user_id');
protected $table = 'conversationsmember';
public function users(){
return $this->belongsTo('User', 'user_id', 'id');
}
public function conversations(){
return $this->belongsTo('Conversation', 'conversation_id', 'id');
}
}
ConversationsReply Model
class ConversationsReply extends Eloquent{
protected $fillable = array('reply', 'user_id','conversation_id', 'ip');
protected $table = 'conversationsreply';
public function users(){
return $this->belongsTo('User', 'user_id', 'id');
}
public function conversations(){
return $this->belongsTo('Conversation', 'conversation_id', 'id');
}
}
答案 0 :(得分:0)
我可能在这里错了,但是根据你所写的内容,你可以用更简单的方式编写代码。
我建议您考虑使用ConversationMembers作为用户和对话之间的数据透视表,定义多对多关系。您可以找到您要查找的所有信息here。