CakePHP 3: Как дать условие в методе get?

63
6

Я пытаюсь дать условие в cakephp 3 get, где данные будут извлекаться по иностранному идентификатору, а не по первичному ключу. Здесь я попытался под кодом:

$eventPasswordAll = $this->EventPasswordAll->get($id, [
'conditions' => ['event_id'=>$id],
'contain' => ['Events']
]);

Но он показывает мне данные в соответствии с id(primary key), а не event_id. Как я могу добавить это условие в методы get, например event_id=my get id?

спросил(а) 2021-01-25T14:53:09+03:00 4 месяца, 3 недели назад
1
Решение
117

Не используйте get, используйте find. Согласно CakePHP 3.0 Table API, метод get:

Возвращает одну запись после ее нахождения по ее первичному ключу, если запись не найдена, этот метод выдает исключение.

Вам нужно использовать find:

$eventPasswordAll = $this->EventPasswordAll->find('all', [ // or 'first'
'conditions' => ['event_id' => $id],
'contain' => ['Events']
]);
// or
$eventPasswordAll = $this->EventPasswordAll->find()
->where(['event_id' => $id])
->contain(['Events']) ;

ответил(а) 2021-01-25T14:53:09+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема