CakePhp 2.0 使用 Pagination / Paginator 对关联模型进行排序

2024-01-01

我意识到这个问题实际上遍布 StackOverflow,但似乎没有一个答案对我有用。

我的问题非常简单。我只想列出按城市名称排序的公司:

class Company extends AppModel
 public $recursive = 2;

 public $belongsTo = array(
 'City' => array(
  'className'    => 'City',
   'foreignKey'   => 'city_id'
  )
 );

class City extends AppModel {
 public $useTable = 'cities';

 public $belongsTo = 'Country';
 public $hasMany = array(
  'Company' => array(
    'className'    => 'Company',
    'foreignKey'   => 'city_id'
 )
);

在“公司”页面上,以及在“公司控制器”内,我想做这样的事情:

$this->paginate = array(
 'order' => array('Company.City.name' => 'ASC' ),
 // or is it 'order' => array('Company->City.name' => 'ASC' ), ??
);
$companies = $this->paginate('Company');

在视图中,有一个链接可以将顺序更改为按城市名称:

<?php echo $this->Html->link(__('Sort by City name'), array('controller' => 'companies', 'action' => 'index', '?' => array('sort' => 'Company.City.name'))); ?> 

当我创建一个链接以将顺序更改为公司模型内的字段(例如(公司的)名称)时,我会创建如下链接:

<?php echo $this->Html->link(__('Sort by Company name'), array('controller' => 'companies', 'action' => 'index', '?' => array('sort' => 'Company.name'))); ?> 

...效果很好。所有分页链接(如第一个、下一个、数字等)也可以工作,并创建如下链接:

本地主机/公司/2​​0/sort:Company.name/page:2

那么我究竟如何才能为 Company.City.name 执行此操作(当我在其中时,Company.City.Country.name!)目前它似乎忽略了我的“排序”参数。如果我打开调试,当我尝试按 Company.City.name 排序时,生成的 SQL 查询没有“order by”子句。

这让我抓狂,这似乎是一件很简单的事情。非常感谢很多帮助!

UPDATE:嘿!成功了!或者至少,我已经成功了一半!我能够在我的控制器中使用你的建议:

$this->paginate = array(
  'limit' => 10,
  'order' => array('City.name' => 'ASC' )
);

它有效!现在我试图为国家做同样的事情,但它不起作用。我试过了:

$this->paginate = array(
      'limit' => 10,
      'order' => array('City.Country.name' => 'ASC' )
    );

$this->paginate = array(
      'limit' => 10,
      'order' => array('City->Country.name' => 'ASC' )
    );

并且没有爱。它忽略我的“订单”参数。关于我如何做到这一点有什么想法吗?

再次非常感谢您的有用回答。


如果你定义了模型关联船舶,那么你不需要使用Company.City.name等,你可以直接使用City.name。

如果您显示列表,则可以使用以下代码,而不是提供要对表数据进行排序的链接。

<?php echo $this->Paginator->sort('City.name', 'City Name');?>

请询问它是否对您有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CakePhp 2.0 使用 Pagination / Paginator 对关联模型进行排序 的相关文章

  • Wami Recorder实际是如何实现的?

    我对 Wami Recorder 很陌生 而且我从来没有使用过 Flash 所以这实际上可能是一个愚蠢的问题 基本上 如何实施 Wami Recorder 我在网站上看到过它 它在那里工作得很好 但是当我下载它并尝试在 localhost
  • cakePHP 文件下载未找到或不可读

    我现在已经挣扎了一个小时试图解决这个问题 我用它来下载文件app uploads 目录 它说目录未找到或不可读 但我检查了它 它也存在使用的文件 file File filename 我想知道我在这里缺少什么 file this gt Fi
  • 如何在 CakePHP 2.0 中发送带有附件的电子邮件?

    我正在尝试使用 CakePHP 2 0 发送一封带有附件的电子邮件 该文件由用户通过表单提交 到目前为止我有 App uses CakeEmail Network Email email new CakeEmail email gt att
  • 当 CakePHP 表单中的字段属于 hasMany 关联时,如何“解锁”该字段

    我有一个表格代表RewardModifier我们数据库中的表 那RewardModifier hasMany RewardOption 我的表格结构如下 图片 So the RewardModifier页面上可以有很多元素 每个元素有很多R
  • 在 CakePHP 身份验证组件中使用电子邮件而不是用户名

    我正在研究 cakephp 2 x 我的问题是我不想使用用户名进行日志记录 我正在从用户那里获取电子邮件和密码 并从数据库中验证此电子邮件和密码 我的数据库名称中有一个表user它有 3 个字段id email and password 这
  • Cakephp 和对多个结果集进行分页

    当在一个操作中调用一次 this gt paginate 时 我的分页工作正常 但它似乎不能很好地支持多次调用 这就是我想做的 function admin index published this gt pagination Post a
  • 我如何在 CakePHP 2.0 中测试 Add 函数

    有人告诉我 我们还必须测试 Cake 创建的功能 例如添加 删除 如果我有一个像这样的函数 如果它没有任何返回 重定向甚至视图 我该如何测试它 我使用ajax来执行它 public function add if this gt reque
  • cakephp - 如何处理完整性约束违规错误

    我在这里不知所措 我需要知道如何在违反完整性约束的情况下处理错误消息 意思是我想向用户显示一些有意义的消息 而不是显示错误消息 例如 Error SQLSTATE 23000 Integrity constraint violation 1
  • CakePHP 2.0:CakeEmail 的挫败感

    在 Cake 1 3 中 电子邮件组件做了它应该做的事情 2 0 中新的 Cake Email 类令人沮丧 没有发送电子邮件 没有错误 模糊的文档 我已经尝试了所有可能的变体 尝试了我的 SMTP Mail 和 Gmail 但没有任何反应
  • Cakephp foreach 条件

    我必须显示 3 份预订的预订表 它应该显示 3 行 3 项预订 但它只显示一行 在控制器中 public function index hote this gt Reservation gt recursive 1 this gt load
  • 如何在 CakePHP2 中缓存静态内容(css、图像、js 文件)?

    我需要设置一些 HTTP 标头 Expires Cache Control Last Modified 适用于 CSS 文件 图像文件 js 文件等资源 等 Webroot 内容 我读到有一些功能 通过 Configure write As
  • 在类构造函数中实例化供应商类

    在我的 CakePHP 2 应用程序中 我有这样的供应商 我需要在我的控制器类中创建此供应商类的实例 所以我将在控制器的不同功能中使用该实例 App import Vendor fancyVendor array file gt fancy
  • 如何在CakePHP 2.0的控制器中导入类?

    我正在使用 CakePHP 我创建了一个外部类 它不是模型也不是控制器 类的结构如下所示 class UploadImage function sayHello return hahaha 我将该类保存在 App gt Lib 目录中 并将
  • CakeEmail 如何在堆栈跟踪之前确定失败?

    我试图捕获电子邮件失败的时间 以便我可以将所需的数据保存在我的数据库中 并且可以尝试稍后发送 我认为以下内容应该像使用时一样工作save if email gt send success works else fail never gets
  • 如何使子目录中的cakePHP 2.x出现在根目录中(在htaccess中使用mod_rewrite)? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在开发一个位于子目录内的蛋糕应用程序 因为我需要与同一域上的另一个应用程序一起运行它 我希望由 cake 提供支持的页面看起来就像是顶级的 所以而
  • 测试重定向 CakePHP 2.0

    我一直在看食谱上的一些例子 但我不明白 http book cakephp org 2 0 en development testing html a more complex example http book cakephp org 2
  • Cakephp 2.0 和基本身份验证

    我已将我的应用程序从 CakePHP 1 3 升级到 2 0 4 以前 我只能在一个控制器中使用安全组件来模拟基本 HTTP 身份验证 我曾经做过这样的事情 this gt Auth gt allow array this gt Secur
  • 在 CakePHP 中向 Containable 添加条件

    以前我依赖递归 但我没有得到一些解决方案 然后我发现 Containable 对于这些问题工作得很好 我正在开发一个电影评论网站 我需要显示与特定类型相关的电影列表 我有下面的代码 example genre drama options a
  • Cake PHP 中的自定义分页

    我是 cakePHP 的初学者 我不想在 cakePHP 中创建自定义分页 功能 paginator gt numbers 它显示的页码如下 1 2 3 4 通过查看选项 有一些选项可以更改分隔符 添加样式类 css 等等 我想要的是这样的
  • 在 PHP 中生成 Excel 输出的最佳方法是什么? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 还有其他类似 PHPExcel 的 PHP 组件吗 有一些类可以生成 PHP Excel 文件 真正的 Excel 文件 而不是 csv

随机推荐