我正在尝试使用数据透视表来实现多对多的关系。我的数据透视表的名称是“post_tag”,列名是“post_id”和“tag_id”。帖子和标签模型类如下所示。Laravel 5.2.29多对多关系不能正常工作
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>";
}
但它抛出一个错误:
QueryException在Connection.php线729:未发现柱: SQLSTATE [42S22] 1054未知列在 'where子句'(SQL 'posts.post_id':SELECT * FROM posts
其中posts
。 post_id
= 1和posts
。 post_id
不为空)
我想我错过了一些东西。任何人都可以让我知道。
感谢
您的标签上Post模型方法必须连接到App /标签,而不是应用程序/后 – follio