【发布时间】:2017-01-18 05:59:18
【问题描述】:
我正在尝试使用数据透视表来实现多对多关系。我的数据透视表的名称是“post_tag”,列名是“post_id”和“tag_id”。帖子和标签模型类如下所示。
class Post extends Model
{
protected $fillable = array(
'title',
'text',
'active',
'user_id'
);
public function user()
{
return $this->belongsTo('App\Post');
}
public function comments()
{
return $this->hasMany('App\Comment');
}
public function tags()
{
return $this->hasMany('App\Post', 'post_id');
}
}
标签类如下:
class Tag extends Model
{
public function posts()
{
return $this->hasMany('App\Post');
}
}
post_tag 表如下所示:
post_id tag_id 1 1 1 2 2 1我正在尝试使用以下代码为帖子添加标签:
$user = User::find(1);
foreach ($user->posts as $post) {
foreach ($post->tags as $tag) {
print $tag->title;
print "<br>";
}
print "<br>";
}
但是它会抛出一个错误:
Connection.php 第 729 行中的 QueryException:
SQLSTATE [42S22]:未找到列:1054 'where 子句'中的未知列'posts.post_id'(SQL:select * from posts where posts.post_id = 1 和 posts.post_id 是不为空)
我想我错过了什么。谁能告诉我。
谢谢
【问题讨论】:
-
Post 模型上的 tags 方法必须连接到 App/Tag 而不是 App/Post
标签: php laravel-5 eloquent many-to-many