cakephp - 从其他表中获取行

Posted

技术标签:

【中文标题】cakephp - 从其他表中获取行【英文标题】:cakephp - get rows from other table 【发布时间】:2013-11-19 12:42:42 【问题描述】:

在 moviesController 中,我有一个公共函数 add(),它通常需要处理 Movies 表中的数据。 (例如我可以做 $this->Movie->findById($id); 或 $this->Movie->save(); )

在添加视图中,我有一个表单,它接受用户的输入并将其保存到数据库中。 一切正常。

但我想稍微改变一下这个表格,所以会有一个类型列表(动作、喜剧等),用户可以选择其中的许多类型。 现在我只有一个包含类型值的数组,用于填充复选框,但我需要从表中获取这些值。

所以我要问的问题是,在公共函数 add() 中从 moviesController 中的其他表类型获取行的方法是什么,以便我可以在仍然使用主表的同时填充表单列表?

【问题讨论】:

【参考方案1】:

在您的电影控制器中:

<?php 
class MoviesController extends AppController 
  // here you select wath models you want to use
  public $uses = array("Movie", "Genre");


  public function add() 
    // Here you get genre list ids and names
    $genreList =  $this->Genre->find("list", array());

  

我希望这会有所帮助。

【讨论】:

是的,我知道关联并且我一般都在使用它们,但就在这种情况下,我认为我不需要它们,因为它是如此简单。是否可以在 Controller 中更改 $hasMany?因为我只是试图将 'Genre' => array('className' => 'Genre') 添加到电影模型中现有的 $hasMany 中,它对于特定视图非常有用:) 但遗憾的是,网站上的所有其他内容都与MovieController 崩溃了:D 导致它报告“未找到列等”错误 现在好点了吗?还是我不明白? Oups 我正在回复您之前的评论。天哪,是的,这个“$public uses ...”有效!谢谢你:) 我假设MovieGenre 以某种方式关联,在这种情况下您可以简单地使用$this-&gt;Movie-&gt;Genre-&gt;find('list');【参考方案2】:

如果您的Movies 模型与Genre 有任何关系,您可以这样做:

$this->set('genre', $this->Movie->Genre->find('list'));

在你看来,你可以这样做(伪代码):

<?php
    echo $this->Form->input('Movie.Genre', array(
        'options' => $genre,
        'type' => 'select',
        'multiple' => 'checkbox',
        'class' => '',
        'label' => array('class' => 'control-label', 'text' => "Genre:"),
        'after' => ''
    ));
?>

更新:

当然Movie 应该与Genre 有has_many 关系。

【讨论】:

为此,您应该添加 hasMany 或属于您的电影模型 :) book.cakephp.org/2.0/en/models/… @GonzaloBahamedez,无论如何,我会添加它:) 感谢您的回复。但是如果这两个表没有任何关系呢? :) Table Genres 是一个孤独的表,只有一个值列表,没有外键...... 不管你是否有外键,Cake php 都会为你使用有很多和属于的,但每次都最好使用外键。从 cakephp 文档中读取 hasMany 和 belogsTo 指令。 @Marko,你应该拥有它们。如果你有一部与类型相关的电影没有foreign keys,那会很奇怪。

以上是关于cakephp - 从其他表中获取行的主要内容,如果未能解决你的问题,请参考以下文章

CakePHP:删除行后如何使自动增量值再次连续

CakePHP:如何使用内部联接从两个表中检索数据?

cakephp 4 - 如何从相关表中查找最大值和最小值

如何从 CakePHP 中的 URL 字符串获取连接的路由?

将数据保存到 2 个表中 cakephp 3

jQuery ajax 调用无法从 CakePHP 3.8 读取 json 编码数据(获取一个空数组)