我想知道如何使用参数在phalcon控制器内执行查询。
我的SQL查询:
SELECT a.*, getApplicationData(a.id) as json_data
FROM application a
INNER JOIN application_data d on d.application_id = a.id
WHERE a.form_id=1
AND d.firstname LIKE '%:searchQuery:%' ;
以下是我试图执行的方式(我在Phalcon的doc中找到了它,但示例不在控制器中)。
$applications = $this->db->query(
$sqlQuery,
array('searchQuery'=>$searchQuery)
)->fetchAll();
我知道既然你有ORM我不应该像这样查询数据库,但对于我正在研究的功能必须是这样的,这个查询是动态的。
我的问题是如何在查询中传递:searchQuery:
的参数。
提前感谢您的帮助。
答案 0 :(得分:3)
你几乎做对了。您只需在绑定数组中添加百分比(%)。
$sqlQuery = 'SELECT * FROM events WHERE title LIKE :searchQuery';
$applications = $this->db->query(
$sqlQuery,
array('searchQuery'=> '%' . $searchQuery . '%')
)->fetchAll();
另请注意我如何绑定$sqlQuery
中的:searchQuery 。它只使用单个:而不是包围参数。这是因为Raw查询直接使用数据库连接,在我们的例子中它是PDO。
可在此处找到更多示例:https://docs.phalconphp.com/en/latest/api/Phalcon_Db_Adapter_Pdo.html