【问题标题】:How to split building query into multiple lines?如何将建筑查询拆分为多行?
【发布时间】:2018-04-14 11:42:24
【问题描述】:

我想构建基本查询,即:

            $query = $this->find('all')
            ->contain("Assets")
            ->order(['Transactions.created' => "DESC"])
            ->limit($count);

然后如果(满足某些条件)添加

            ->where(['asset_id' => $asset_id])

我可以吗?或者我应该在两个版本中重复整个查询(有和没有'where'部分)?

【问题讨论】:

  • '''if(isset($asset_id)) {$query->where(['asset_id' => $asset_id])}'''??
  • @Salines 我认为这行不通:/
  • 它适用于您的示例。
  • @Salines 对不起!你是对的! 0_0 谢谢!谢谢@ndm!
  • @Salines 如果您将您的评论作为答案,我会将其标记为正确的

标签: cakephp orm cakephp-3.0


【解决方案1】:

简答:

if(isset($asset_id)){
   $query->where(['asset_id' => $asset_id]);
}

【讨论】:

  • @kicaj 的答案也正确且有效,但这个更直接
【解决方案2】:

试试这样的:

$query = $this->find('all')
    ->contain([
        'Assets' => function ($assets) use ($asset_id) {
            if (isset($asset_id)) {
                $assets->where([
                    'Assets.asset_id' => $asset_id
                ]);
            }

            return $assets;
        }
    ])->order(['Transactions.created' => "DESC"])
    ->limit($count);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多