0
我有一个笑话,joke_tags,tags表。我试图让所有与笑话ID匹配的标签。Laravel belongsToMany,无法解决它
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');
});
那么,为什么laravel承担不同的主键?... – tempestor
因为laravel假设你的主键被命名为“ID”。你改变它,然后你需要告诉它你改变了什么。 –
@tempestor这个答案对你有帮助吗?我可以看到你在关系中也使用错误的语法,所以他们不工作。你解决了这个问题吗? –