当前位置: 首页 > 知识库问答 >
问题:

显示第三个表中的字段

诸正谊
2023-03-14

我试图从关系中的第三个表中显示一个字段,在检查了这里的帖子和文档后,我仍然卡住了。我有3个模型都以某种方式相关。我在这里找到了类似的帖子,但我仍然没有得到它的工作。如果我在文档的某个地方错过了这个,我很抱歉,但是我已经读了很多,尝试了很多。我现在猜得太多了,所以我需要帮助。

 1)Tutorsession - belongsto teachers,
 2)  Teacher -has 1 user,hasmany tutorsessions
 3)    User- has 1 teacher, //////I want to display a field from this table given I display tutorsessions

In controller    
$this->set('tutor',
    $this->Tutorsession->find('first',
        array(
            'conditions' => array('Teacher.user_id' => $id),
            'contain' => 'User.username'
        )
    )
); //////////no error but no results

from view  echo '<td>'. $item['User']['username'].'</td>'; ///////error user undefined

tutorsession自动从教师表中获取行,但不从findall上的模型设置的用户表中获取行。

我想显示用户表中的用户名。我显示tutorsession表,然后可以显示具有模型关联的教师表,但我不能从教师表转到用户表,从用户id中获取用户名作为公共字段。我已经检查了下面的文档,我不确定为什么我的代码不能显示users表中的用户名。

http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html http://book.cakephp.org/2.0/en/models/retrieving-your-data.html

update: here are the models

class User extends AppModel {

     public $hasOne = array(
        'Teacher' => array(
            'className' => 'Teacher',
            'dependent' => true
        )

class Tutorsession extends AppModel
{
 public $name='Tutorsession';

     public $belongsTo = array(
        'Teacher' => array(
            'className' => 'Teacher',
            'foreignKey' => 'teacher_id'
        )

class Teacher extends AppModel
{

    public $name='Teacher';
    public $hasMany = array('Tutorsession');
     public $belongsTo = array(
        'User' => array(
            'className' => 'User',
            'foreignKey' => 'user_id'
        )
    );

共有3个答案

郭瀚海
2023-03-14
$tutor=$this->Teacher->find('first',
        array(
            'conditions' => array('Teacher.user_id' => $id)
        )
    );

debug($tutor); exit();

您的结果类似:

'Teacher' => array(
        'id' => '1',
        'name' => 'abc',
        'created' => '1397040385',
        'updated' => '1397725860'
    ),


'User' => array(
        'id' => '4',
        'name' => 'administrators',
        'created' => '1397032953',
        'modified' => '1397032953'
    ),


'Tutorsession' => array(
                 0=>array(
                'id' => '3',
                'name'=>'abc',
                'created' => '1400729137'
                   ),
                 1=>array(
                'id' => '4',
               'name'=>'abc',
               'created' => '1400729137'
                  )
              )

确保你的模型是正确的

程和煦
2023-03-14

试试这个:

$this->Tutorsession->recursive = 2;
$this->Tutorsession->Teacher->contain('User');
$this->set('tutor',
    $this->Tutorsession->find('first',
        array(
            'conditions' => array('Teacher.user_id' => $id)
        )
    )
);
郎鸿
2023-03-14

在模型中添加可包含的行为

public $actsAs = array('Containable');

在控制器中执行以下查询

$contain = array('Teacher' => array('User'));
$this->set('tutor', $this->Tutorsession->find('first',array(
        'conditions' => array('Teacher.user_id' => $id),
        'contain' => $contain
    )));
 类似资料:
  • 问题: 怎样在模板中个别显示表单字段? 解决: 你可以使用’render()’方法在你的模板中显示部分的表单字段。 假设你想创建一个名字/姓氏表单。很简单,只有两个字段,不需要验证,只是为了测试目的。 from web import form simple_form = form.Form( form.Textbox('name', description='Name'), for

  • 问题内容: 我想通过按下JFrame中的按钮来启动另一个JFrame。但是,如果按Button,它将显示JFrame,但其中不显示Buttons和Sliders。 } 第二个具有完全相同的构造函数。滑块和按钮不是静态的。在应显示“按钮”的位置,屏幕为黑色。 希望你能帮我 :) 编辑: 问题答案: 做你最后一件事… 另外,在添加新组件时,使用和鼓励容器更新其布局。 建议: 确保您的用户界面在EDT上

  • 我试图在一个Jasper报告中显示多个表,我使用子报告来实现这个功能。但我一直在显示几个子报告。实际上,只显示其中一个(第一个)。 以下是我的主report.jrxml: 下面是subjectSubreport.jrxml: 这是printersSubreport.jrxml: 当我切换子报告时,第一个报告正确显示,另一个报告消失。在JasperSoft Studio中,一切都很好,当我将它们导出

  • 问题内容: 嗨,我在下面的表格中记录了活动和分数 我需要从活动中返回所有记录 退货 然后我需要基于来自点表的用户ID对用户点求和 退货 一切都很好,但我需要将它们放在一起给用户,即 有指针吗? 问题答案: 使用外部联接: 或子查询:

  • 我有三个表:user、home、user_home。 在代码中,我有实体用户和主页。 但是我收到下一条消息:“QuerySyntaxException:UserHome没有映射”

  • 我用的是Jasper reports 6.17,我在Jasper Studio里做了一个列表。 列表中只有两个名为“test1”和“test2”的项目,但只显示了一个,我不知道为什么。生成的PDF仅显示“test2”,为什么缺少“test1”?如果我添加10项,第一行将丢失。 jrxml文件是: java文件是: