我是 CakePHP 的新手,现在我陷入了很多情况
好的,我有 3 个表:
- 带字段的问题(id,问题)
- question_product 带字段(id、question_id、product_id、question_number、is_enabled)
- 具有字段(id、名称、代码、is_enabled)的产品
所以当我想选择特定领域的问题时,我现在不知道如何解决它,我的代码是这样的:
Question.php(模型)
class Question extends AppModel {
public $hasAndBelongsToMany = array (
'Product' => array (
'joinTable' => 'question_product',
'foreignKey' => 'question_id',
'associationForeignKey' => 'product_id',
'unique' => 'keepExisting',
'order' => 'question_number',
'fields' => array (
'QuestionProduct.question_number',
'Product.id',
'Product.name'
),
'conditions' => array (
'QuestionProduct.is_enabled' => 1,
)
)
);
}
QuestionsController.php(控制器)
public function loadQuestions($productId) {
$this->view = 'load_questions';
$questions = $this->Question->find('all', array (
'fields' => array (
'Question.id',
'Question.question',
'Question.is_optional',
'Question.reason_optional',
'Question.text_size'
),
'conditions' => array (
'QuestionProduct.product_id' => $productId
)
));
$this->set($questions);
}
方法 loadQuestions 有一个参数可供指定产品选择
如果我使用 sql 查询,它会是这样的
从 Question 中选择所有条件 Product.product_id=4,按 QuestionProduct.question_number 升序排序
select questions.*
from questions
join question_product on questions.id=question_product.question_id
join products on products.id=question_product.product_id
where products.id=4
order by question_product.question_number;
任何答案将不胜感激:)
谢谢 !