CakePHP如何完成一个不在

CakePHP如何完成一个不在,cakephp,cakephp-3.0,Cakephp,Cakephp 3.0,我想在CakePHP中实现一个NOT IN子句,但我无法实现它。我一直在StackOverflow中阅读CakePHP食谱和一些答案,但它对我不起作用 我有一个名为“Hotel”的表,其中包含所有的模型、控制器和视图。在视图模板中,我构建了一个CakePHP单元,我想在其中显示除当前正在查看的酒店之外的其他酒店。例如,如果我正在显示id为5的酒店视图,我希望显示除该酒店视图id号之外的其他酒店选项 我在Cell Controller中有以下查询: $hotels = $this->Hote

我想在CakePHP中实现一个NOT IN子句,但我无法实现它。我一直在StackOverflow中阅读CakePHP食谱和一些答案,但它对我不起作用

我有一个名为“Hotel”的表,其中包含所有的模型、控制器和视图。在视图模板中,我构建了一个CakePHP单元,我想在其中显示除当前正在查看的酒店之外的其他酒店。例如,如果我正在显示id为5的酒店视图,我希望显示除该酒店视图id号之外的其他酒店选项

我在Cell Controller中有以下查询:

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

我希望$current_hotel_id具有当前正在查看的酒店的值。这就是我正在采取的方法


任何有用的信息都将不胜感激。

如果您需要单元格中控制器中可用的某些值,则必须将该值传递给它

首先,在单元格操作中声明一个参数:

class HotelsCell extends Cell{
    public function hotels($current_hotel_id){
        //your code here
    }
}
然后,在您的视图中,将参数传递给单元格:

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

文档中的更多信息:

如果您需要单元格中控制器中可用的某些值,则必须将该值传递给它

首先,在单元格操作中声明一个参数:

class HotelsCell extends Cell{
    public function hotels($current_hotel_id){
        //your code here
    }
}
然后,在您的视图中,将参数传递给单元格:

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

文档中的更多信息:

我希望$current\u hotel\u id具有当前正在查看的酒店的值。-如果我离开->where(['Hotels.id不在'=>'Hotels.id']),出于某种原因,显示的值始终是(0),而不是当前视图id。因此,这不起作用。['Hotels.id不在'=>'Hotels.id'])如此有效地在何处显示id=ID-如何工作?我想排除当前正在加载的视图。这就是我想指出的。我希望$current_hotel_id具有当前正在查看的酒店的价值。-如果我离开->where(['Hotels.id不在'=>'Hotels.id']),出于某种原因,显示的值始终是(0),而不是当前视图id。因此,这不起作用。['Hotels.id不在'=>'Hotels.id'])如此有效地在何处显示id=ID-如何工作?我想排除当前正在加载的视图。这就是我想指出的。