Php Phalcon:如何获得不同的模型?
使用,当使用Php Phalcon:如何获得不同的模型?,php,phalcon,Php,Phalcon,使用,当使用find()方法获取行时,如何获取不同的行 如果您声明了一些可以使用的列: $result = Word::find(['columns'=>'distinct foo']); 使用生成器: 后面示例的基本实现: $queryBuilder = $this->getDI()->getModelsManager() ->createBuilder() ->addFrom('tableName', 't'); 独
find()
方法获取行时,如何获取不同的行 如果您声明了一些可以使用的列:
$result = Word::find(['columns'=>'distinct foo']);
使用生成器: 后面示例的基本实现:
$queryBuilder = $this->getDI()->getModelsManager()
->createBuilder()
->addFrom('tableName', 't');
独立命令:
$queryBuilder->distinct('t.id');
Column thing也可以,但不推荐:
$queryBuilder->columns('DISTINCT(t.id) AS id')
使用严格的模型:
// we are waiting for it, but may still not be implemented
TableModel::find(array('distinct' => 'id'))
计数:
TableModel::count(array("distinct" => "id"));
根据前面的回答,推荐的方式较少:
TableModel::find(array('columns' => 'distinct(id)'))
并链接到imo最佳
另外,在使用group关键字时也存在一些问题
$result = TableModel::find(array("x_id = $x_id","group"=>"uid"));
您可以使用x_id向第一节添加任意多个附加参数,例如
x_id = $x_id AND y_id = 100
第二部分是指定要为TableModel分组的字段。在phalcon 3.x中,似乎要使用模型管理器执行distinct,distinct方法将布尔值作为参数。因此,要对列执行distinct,您应该执行以下操作:
$queryBuilder=$this->getDI()->getModelsManager()
->createBuilder()
->addFrom('tableName','t')
->列('t.myColumn')
->清晰的(真实的)
->getQuery()
->执行()代码>在某些情况下,您可能希望在模型初始化时使用它,例如:
/**
* Class MyModel
* @property \Phalcon\Mvc\Model\Resultset\Simple referenceAlias
* @method int countReferenceAlias
*/
class MyModel extends \Phalcon\Mvc\Model
{
public function initialize(): void
{
$this->setSource('my_model');
$this->hasMany('id', 'ReferenceModel', 'reference_id', [
'alias' => 'referenceAlias',
'params' => ['distinct' => 'user_id']
]);
}
}
所以以后你可以这样打电话:
print $myModel->countReferenceAlias();
或
您可以在模型中定义::初始化()方法:
$this->hasManyToMany(
'asset_id',
'NameSpace\AssetsCategory',
'asset_id',
'category_id',
'NameSpace\Category',
'category_id',
[
'alias' => 'SimilarAssets',
'params' => [
'group' => 'NameSpace\Category.category_id' // remove duplicate data
]
]
);
这是错误的:
$this->hasManyToMany(
'asset_id',
'NameSpace\AssetsCategory',
'asset_id',
'category_id',
'NameSpace\Category',
'category_id',
[
'alias' => 'SimilarAssets',
'params' => [
'group' => 'NameSpace\Category.category_id' // remove duplicate data
]
]
);