У меня две таблицы, имена разные и пользователи.В разных таблицах есть driver_id и vendor_id.Оба идентификатора в таблице пользователей с именем столбца идентификатора.Вот мой пример кода.
src / Model / Table / Miscellaneous.php
<?php
namespace App\Model\Table;
use Cake\ORM\Table;
use Cake\Validation\Validator;
class MiscellaneousTable extends Table {
public function initialize(array $config) {
$this->table('miscellaneous');
$this->displayField('name');
$this->primaryKey('id');
$this->addBehavior('Timestamp');
$this->belongsTo('Vendors', [
'foreignKey' => 'vendor_id',
'className' => 'users',
'joinType' => 'left'
]);
$this->belongsTo('Drivers', [
'foreignKey' => 'driver_id',
'className' => 'users',
'joinType' => 'left'
]);
}
}
Я хочу выполнить поиск по имени поставщика и имени драйвера.Вот мои условия пагинации:
if (!empty($this->request->data['vendor']['name'])) {
$vendor_name = $this->request->data['vendor']['name'];
}
if (!empty($this->request->data['driver']['name'])) {
$driver_name = $this->request->data['driver']['name'];
}
$miscellaneous = $this->paginate($this->Miscellaneous, ['contain' => ['Drivers' => function(\Cake\ORM\Query $q) {
return $q->where(['Drivers.name LIKE ' => '%'.$driver_name.'%']);
}, 'Vendors' => function(\Cake\ORM\Query $q) {
return $q->where(['Vendors.name LIKE ' => '%'.$vendor_name.'%']);
}], 'conditions' => $con, 'order' => ['Miscellaneous.id' => 'DESC']]);
Но это ничего не показывает.Пожалуйста, помогите мне найти правильные решения.Работает без указания имени поставщика и драйвера.