CakePHP Как выполнить NOT IN - PullRequest
0 голосов
/ 10 мая 2018

Я хочу выполнить условие NOT IN в CakePHP, но я не могу этого достичь.Я читал Кулинарную книгу CakePHP и некоторые ответы здесь, в StackOverflow, но она не работает для меня.

У меня есть таблица с именем 'Hotel' со всеми ее моделями, контроллерами и видами.В шаблоне просмотра я создал ячейку CakePHP, в которой я хочу показать другие отели, кроме той, которая просматривается в данный момент.Если, например, я показываю вид отеля с идентификатором №5, я хочу показать другие варианты отелей, за исключением идентификатора этого отеля.

У меня есть следующий запрос в контроллере ячейки:

$hotels = $this->Hotels->find('all')
    ->where(['Hotels.id NOT IN' => $current_hotel_id])
    ->limit(4)
    ->order('rand()')
    ->toArray();

Я хочу, чтобы $ current_hotel_id имел значение текущего отеля, который просматривается.Это подход, который я использую.

Буду признателен за любую полезную информацию.

1 Ответ

0 голосов
/ 10 мая 2018

Если вам нужно какое-то значение, которое доступно в вашем контроллере в ячейке, вы должны передать ему это значение.

Сначала объявите аргумент в действии ячейки:

class HotelsCell extends Cell{
    public function hotels($current_hotel_id){
        //your code here
    }
}

Затем, по вашему мнению, передайте аргумент в ячейку:

$this->cell("Hotels::hotels",[$hotel->id])

Дополнительная информация в документах: Передача аргументов в ячейку

...