CakePHP双模型关联

时间:2016-09-07 15:25:00

标签: cakephp-3.0 model-associations

我的帐户型号:id,name

我的参赛作品型号:id,account_id1,account_id2,金额

所以我的条目有2个外键到帐户模型。

我定义了这样的模型关联。

$this->belongsTo(
  'Acc1',
  [
    'className' => 'Accounts',
    'foreignKey' => 'account_id1',
    'joinType' => 'INNER',
  ]
);

$this->belongsTo(
  'Acc2',
  [
    'className' => 'Accounts',
    'foreignKey' => 'account_id2',
    'joinType' => 'INNER',
  ]
);

现在我需要查找相关帐户名称以" ab"开头的条目。

在我的条目模型文件中:

$this->find()
  ->matching(
    'Acc1',
    function ($q) {
      return $q->where(['LEFT(Acc1.name, 2) =' => 'ab']);
    }
  );

这将为我提供相关帐户(通过account_id1)名称以" ab"

开头的所有条目
$this->find()
  ->matching(
    'Acc1',
    function ($q) {
      return $q->where(['LEFT(Acc1.name, 2) =' => 'ab']);
    }
  )
  ->matching(
    'Acc2',
    function ($q) {
      return $q->where(['LEFT(Acc2.name, 2) =' => 'ab']);
    }
  );

两个帐户名称以" ab"开头的结果。

如何获取Acc1.name Acc2.name以" ab"?

开头的条目

1 个答案:

答案 0 :(得分:0)

尝试在不使用->matching的情况下构建查询。您可以使用联接,也可以包含Acc1Acc2。然后蛋糕有一些OR方法来帮助你。

->where(['LEFT(Acc1.name, 2) =' => 'ab'])
->orWhere(['LEFT(Acc2.name, 2) =' => 'ab']);

http://book.cakephp.org/3.0/en/orm/query-builder.html#advanced-conditions