📅  最后修改于: 2021-01-07 09:27:18             🧑  作者: Mango
它允许用户实现类似于SQL查询语言的查询语言。 PHQL被实现为连接到RDBMS的解析器。 Phalcon解析器使用与SQLite相同的技术。
PHQL包含以下列出的功能:
PHQL使开发人员能够相应地进行个性化和自定义。以下是执行的PHQL语句的生命周期:
前端
首先,我们创建一个接受输入的前端。
我们有2个模型手机和品牌:
belongsTo('brand_id', 'Brands', 'id');
}
}
class Brands extends Model
{
public $id;
public $name;
/**
* The model Brands is mapped to the 'sample_brands' table
*/
public function getSource()
{
return 'sample_brands';
}
/**
* A Brand can have many Mobile
*/
public function initialize()
{
$this->hasMany('id', 'Mobile', 'brand_id');
}
创建PHQL查询
它在目录Phalcon \ Mvc \ Model \ Query下创建。
getID()
);
// Execute the query returning a result if any
$mobile = $query->execute();
执行PHQL查询
从控制器或视图下的目录Phalcon \ Mvc \ Model \ Manager执行。
modelsManager->createQuery('SELECT * FROM Mobile');
$mobile = $query->execute();
// With bound parameters
$query = $this->modelsManager->createQuery('SELECT * FROM Mobile WHERE name = :name:');
$mobile = $query->execute(
[
'name' => 'Sony',
]
);
输出:
结果类型
结果类型根据查询的列类型分为简单和复杂两种。
如果我们检索单个对象,则对象返回为简单结果(Phalcon \ Mvc \ Model \ Resultset \ Simple) 。
modelsManager->createQuery('SELECT * FROM Mobiles);
$mobiles= $query->execute();
// With bound parameters
$query = $this->modelsManager->createQuery('SELECT * FROM Mobiles WHERE name = :name:');
$mobiles = $query->execute(
[
'name' => ?Sony',
]
);
如果我们一次访问完整的对象和标量,则返回复杂结果(Phalcon \ Mvc \ Model \ Resultset \ Complex)。
executeQuery($phql);
foreach ($result as $row) {
echo 'Name: ', $row->Mobiles->name, "\n";
echo 'Price: ', $row-> Mobiles ->price, "\n";
echo 'Taxes: ', $row->taxes, "\n";
}