我现在正在开发cakephp。请解释蛋糕php中自定义mysql查询的过程。 我们必须使用
编写查询$this->Model->query();
然后我将它返回到controller.In控制器中,我在特定的函数中加载了模型,我调用了函数并将该函数设置为像这样查看
$this->set('post',$this->User->get());
这是正确的过程吗?请解释一下代码......
答案 0 :(得分:3)
你想用这种方式写什么查询?可以使用CakePHP ORM编写几乎所有查询。使用CakePHP的查询构建函数是首选方法。
所有获取操作的数据也应该在模型中完成。请参阅Separation of Concerns。
这是一个完整的模型方法,用于根据其ID或slug获取用户记录。
public function view($userId, $options = []) {
$defaults = array(
'contain' => array(),
'conditions' => array(
'OR' => array(
$this->alias . '.' . $this->primaryKey => $userId,
$this->alias . '.slug' => $userId,
),
$this->alias . '.email_verified' => 1
),
);
$result = $this->find('first', Hash::merge($defaults, $options));
if (empty($result)) {
throw new NotFoundException(__d('user_tools', 'User not found!'));
}
return $result;
}
<强>控制器:强>
public function view($userId = null) {
$this->set('user', $this->User->view($userId);
}
替代但非首选模式方法来获取数据
public function view($userId, $options = []) {
$result = $this->query(/* Your query here */);
if (empty($result)) {
throw new NotFoundException(__d('user_tools', 'User not found!'));
}
return $result;
}
答案 1 :(得分:0)
您的解决方案是正确的,让我更详细地说明它
第一个解决方案
在您的控制器中
$arrayTemp =array();
$arrayTemp = $this->ModelName->query(' Your Query String ');
$this->set('post',$arrayTemp);
第二个解决方案
在您的模型类中
function returnDate(){
return $this->query('Your Query String')
}
在Controller类
中 $arrayTemp = $this->ModelName->returnDate();
$this->set('post',$arrayTemp);
}