您好,所以我在问题[表名: tblquestion ,ID: que_id ]和Agecategory [表名: tblagecategory ,ID: aca_id ]之间有很多联系。他们共享了一个名为QuestionAgecategory的表[表名: tblquestionagecategory ,id: qac_id ]。
我想指出的是,所有IDS和表名都是自定义名称,而不是根据典型的Laravel语法。
我正试图在Laravel中将它们联系起来。到目前为止,当我尝试查看$ question-> agecategories时,它返回null。
但是它中有记录,并在$ question = App\Question::find(1);之后返回此记录。
问题模型
class Question extends Model
{
protected $table = 'tblquestion';
protected $primaryKey = 'que_id';
protected $keyType = 'integer';
public $incrementing = true;
public $timestamps = false;
public function agecategories()
{
return $this->belongsToMany('App\Agecategory');
}
}
年龄类别模型
class Agecategory extends Model
{
protected $table = 'tblagecategory';
protected $primaryKey = 'aca_id';
protected $keyType = 'integer';
public $incrementing = true;
public function questions()
{
return $this->belongsToMany('App\Question');
}
}
QuestionAgecategory模型
class QuestionAgecategory extends Model
{
protected $table = 'tblquestionagecategory';
protected $primaryKey = 'qac_id';
protected $keyType = 'integer';
public $incrementing = true;
}
移居
Schema::create('tblquestion', function (Blueprint $table) {
$table->increments('que_id');
$table->string('que_name', 128);
});
Schema::create('tblagecategory', function (Blueprint $table) {
$table->increments('aca_id');
$table->timestamps();
});
Schema::create('tblquestionagecategory', function (Blueprint $table) {
$table->increments('qac_id');
$table->integer('qac_que_id')->unsigned();
$table->integer('qac_aca_id')->unsigned();
$table->foreign('qac_que_id')->references('que_id')->on('tblquestion');
$table->foreign('qac_aca_id')->references('aca_id')->on('tblagecategory');
});
最佳答案
您正在使用自定义列和自定义数据库命名。
您的“属于许多人”期望透视表tblquestion_tblagecategory
不存在。正如previos回答所指出的,您应该更改自己的belongsToMany以搜索自定义表和列。
https://laravel.com/docs/5.6/eloquent-relationships#many-to-many
在您的问题模型中对此进行更改
public function agecategories()
{
return $this->belongsToMany('App\Agecategory', 'tblquestionagecategory', 'qac_que_id', 'qac_aca_id');
}
而且,在您的其他Agecategory模型中
public function questions()
{
return $this->belongsToMany('App\Question', 'tblquestionagecategory', 'qac_aca_id', 'qac_que_id');
}
关于Laravel具有自定义表名称和ID的多对多关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51982358/