Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Phalcon:如何获得不同的模型?_Php_Phalcon - Fatal编程技术网

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
            ]
        ]
    );