我有一个笑话,joke_tags,标签表。我试图获取与笑话ID匹配的所有标签。
class Joke extends Model
{
public function tags() {
return $this->belongsToMany('App\Tag', 'joke_tags', 'tag_id', 'joke_id');
}
}
我的标签型号:
class Tag extends Model
{
public function jokes() {
return $this->belongsToMany('App\Joke');
}
}
tags()
和jokes()
这两项功能都无法正常工作......我现在已经挣扎了2个小时。
我的数据库布局:
Schema::create('jokes', function (Blueprint $table) {
$table->increments('ID');
$table->string('author');
$table->longText('joke');
$table->timestamps();
});
Schema::create('joke_tags', function (Blueprint $table) {
$table->increments('ID');
$table->integer('joke_id')->unsigned();
$table->foreign('joke_id')->references('ID')->on('jokes');
$table->integer('tag_id')->unsigned();
$table->foreign('tag_id')->references('ID')->on('tags');
});
Schema::create('joke_votes', function (Blueprint $table) {
$table->increments('ID');
$table->integer('joke_id')->unsigned();
$table->foreign('joke_id')->references('ID')->on('jokes');
$table->string('IP');
$table->boolean('type');
});
Schema::create('tags', function (Blueprint $table) {
$table->increments('ID');
$table->string('tag');
});
答案 0 :(得分:1)
将它添加到你的两个模型中,你就可以了。
protected $primaryKey = 'ID';
编辑:除了添加上述属性外,您还应按如下方式定义关系。
class Joke extends Model
{
public function tags() {
return $this->belongsToMany('App\Tag', 'joke_tags', 'joke_id', 'tag_id');
}
}
class Tag extends Model
{
public function jokes() {
return $this->belongsToMany('App\Joke', 'joke_tags', 'tag_id', 'joke_id');
}
}