条件不适用于使用cakephp 3中的contains的hasMany关联

时间:2018-05-30 06:03:42

标签: cakephp-3.0

我正在尝试搜索用户模型和地址模型的几个条件。这里的地址模型与hasMany关系中的用户模型相关联。用户模型上的任何条件都可以正常工作但不能在地址模型中工作。这是我的代码片段。

 $this->hasMany('Addresses', [
        'foreignKey' => 'user_id',
        'joinType' => 'LEFT'
    ]);
$this->belongsTo('Users', [
        'foreignKey' => 'user_id'
    ]);

$options = array();
    $status = $this->request->getQuery('status');
    $options = array_merge(array('Users.status' => $status), $options);
    $profile = array();
    $phone = $this->request->getQuery('phone');
    $profile = array_merge(array('Addresses.phone' => $phone), $profile);
    $addressArr = array('Addresses.user_id', 'Addresses.mobile', 'Addresses.phone', 'Addresses.country_id', 'Addresses.state_id', 'Addresses.city', 'Addresses.zipcode', 'Addresses.address_line1');

    $uses = $this->find('all')
        ->select(['Users.id', 'Users.user_type_id', 'Users.first_name', 'Users.last_name', 'Users.email', 'Users.image', 'Users.status', 'Users.social_type'])
        ->contain([
            'Addresses' => function ($q) use ($addressArr, $profile) {
                return $q->select($addressArr)->where($profile);
            }
        ])
        ->where($options)
        ->offset($offset)
        ->limit($limit)
        ->toArray();

    return $uses;

0 个答案:

没有答案