拉拉维尔属于ToMany,无法解决



我有一个笑话,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');
    }
}

相关内容

最新更新