gpt4 book ai didi

php - hasmanythrough 关系不起作用

转载 作者:搜寻专家 更新时间:2023-10-31 22:03:48 24 4
gpt4 key购买 nike

我正在使用 laravel 创建一个消息传递应用程序。我使用了四种迁移(用户、对话、对话成员和对话回复)。我还定义了模型之间的关系。

用户的详细信息将存储在用户表中。对话 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();

对话成员迁移:

$table->increments('id');

$table->integer('conversation_id');
$table->integer('user_id');

$table->timestamps();

对话回复迁移

$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 模型

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');
}
}

最佳答案

我在这里可能是错的,但从你写的内容来看,你可以用更简单的方式编写代码。

我建议您考虑使用 ConversationMembers 作为用户和对话之间的数据透视表,定义多对多关系。您可以找到所有您正在寻找的信息here .

关于php - hasmanythrough 关系不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22787935/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com