php - CakePHP - HABTM 分页查询问题

标签 php cakephp cakephp-1.3 has-and-belongs-to-many

表格

restaurants
cuisines
cuisines_restaurants

餐厅和美食模型都设置为 HABTM。

我正在尝试获取分页餐厅列表,其中 Cuisine.name = 'italian'(示例),但不断出现此错误:

1054: Unknown column 'Cuisine.name' in 'where clause'

它正在构建的实际查询:

SELECT `Restaurant`.`id`, `Restaurant`.`type` ..... 
`Restaurant`.`modified`, `Restaurant`.`user_id`, `User`.`display_name`,
`User`.`username`, `User`.`id`, `City`.`id`,`City`.`lat`  ..... 
FROM `restaurants` AS `Restaurant` LEFT JOIN `users` AS `User` ON 
(`Restaurant`.`user_id` = `User`.`id`) LEFT JOIN `cities` AS `City` ON 
(`Restaurant`.`city_id` = `City`.`id`) WHERE `Cuisine`.`name` = 'italian' 
LIMIT 10

“.....”部分只是我删除的附加字段,以缩短向您展示的查询。

我不是 CakePHP 专家,所以希望有一些明显的错误。我这样调用分页:

$this->paginate = array(
    'conditions' => $opts,
    'limit' => 10,
);
$data = $this->paginate('Restaurant');
$this->set('data', $data);

$opts 是一个选项数组,其中一个是 'Cuisine.name' => 'italian'

我也试过设置 $this->Restaurant->recursive = 2;但这似乎没有做任何事情(我想我不应该那样做?)

非常感谢任何帮助或指导。


编辑

models/cuisine.php
    var $hasAndBelongsToMany = array('Restaurant');

models/restaurant.php
    var $hasAndBelongsToMany = array(
    'Cuisine' => array(
        'order' => 'Cuisine.name ASC'
    ),
    'Feature' => array(
        'order' => 'Feature.name ASC'
    ),
    'Event' => array(
        'order' => 'Event.start_date ASC'
    )
);

最佳答案

this blogpost by me 中所述您必须将相关模型的条件放在分页数组的 contain 选项中。

所以这样的事情应该可行

# in your restaurant_controller.php
var $paginate = array(
    'contain' => array(
        'Cuisine' => array(
            'conditions' => array('Cuisine.name' => 'italian')
        )
    ),
    'limit' => 10
);

# then, in your method (ie. index.php)
$this->set('restaurants', $this->paginate('Restaurant'));

关于php - CakePHP - HABTM 分页查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5655977/

相关文章:

php - jQuery 数据表将日期显示为 [object Object]

php - 比较表中同一列的不同行

cakephp auth组件,使用两种模型

cakephp - 让 Cake PHP 输出具有给定类名的 HTML 提交按钮

wordpress - 在 cakephp 3.0 中重写 cakephp 路径

cakephp - 如何在 Controller 中使用辅助函数?

通过 Cron 的 PHP 并发

php - 为 MySQLi 插入查询设置时区

php - 使用 CakePHP 1.3 将图像上传到服务器

validation - cakePHP:如何在 Controller 中手动将错误验证设置为输入字段