我在mysql数据库中有3个表(items,category_questions_mapping和category_questions),其中我有以下列:
items表包含以下列:
item_id, uuid, radius, category_id
category_questions_mapping包含以下列:
category_id, category_question_id
category_questions包含以下列:
category_question_id, data
我已经为itemss.php创建了items表的模型,我在其中创建了以下方法:
public function category_questions() {
return $this->hasOne('App\CategoryQuestionsMapping','category_id','category_id');
}
上述方法基本上是items表的category_id与category_question_mappings表的category_id之间的关系
问题陈述:
我想知道我应该在上面的方法中做出哪些更改,以便我能够从category_questions表中提取数据列值。有没有我们可以在上面的方法中建立关系,以便它可以拉数据列?
上述方法将用于控制器中进行显示。
要访问类别问题表列,您还必须在类别question_mapping模型上定义关系,例如:
public function category_questions() {
return $this->hasOne('App\CategoryQuestions','category_question_id','category_question_id');
}
然后访问你想要的字段,如qazxsw poi。
顺便说一句,我建议命名你显示的第一个关系,如category_questions_mapping(),因为它与category_questions_mapping表链接。
您不能仅更改$items->category_questions_mapping->category_questions->data
方法来解决问题。但你可以在2个模型中建立2个关系,并通过2个关系查询category_questions
。
data
你的关系使用如下:
// App\Item
public function category_questions_mapping() {
return $this->hasOne(CategoryQuestionsMapping::class, 'category_id', 'category_id');
}
// App\CategoryQuestionsMapping
public function category_question() {
return $this->hasOne(CategoryQuestion::class, 'category_question_id', 'category_question_id');
}
// Somewhere else
// Get data:
$data = $item->category_questions_mapping->category_question->data;
// Find by data:
$items = \App\Item
::whereHas('category_questions_mapping.category_question', function ($query) {
$query->where('data', 'foo');
})
->get();