CakePHP 双模型关联

CakePHP double model association

我的账户模型: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" 开头的条目?

尝试在没有 ->matching 的情况下构建查询。您可以使用联接,或包含 Acc1Acc2。那么cake有一些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