我有一个笑话,joke_tags,tags表。我正在尝试获得与笑话ID相匹配的所有标签。
class Joke extends Model
{
public function tags() {
return $this->belongsToMany('AppTag', 'joke_tags', 'tag_id', 'joke_id');
}
}
我的标签型号:
class Tag extends Model
{
public function jokes() {
return $this->belongsToMany('AppJoke');
}
}
功能tags()
和jokes()
都不起作用...我一直在努力2个小时。
我的DB布局:
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');
});
将其添加到您的两个模型中,您会很好。
protected $primaryKey = 'ID';
编辑:除了添加上述属性外,您应该定义关系如下。
class Joke extends Model
{
public function tags() {
return $this->belongsToMany('AppTag', 'joke_tags', 'joke_id', 'tag_id');
}
}
class Tag extends Model
{
public function jokes() {
return $this->belongsToMany('AppJoke', 'joke_tags', 'tag_id', 'joke_id');
}
}