cakephp3中的递归?

Posted

技术标签:

【中文标题】cakephp3中的递归?【英文标题】:Recursive in cakephp3? 【发布时间】:2015-10-08 12:32:04 【问题描述】:

这是我的表格关联代码:

class UserMastersTable extends Table 
  public function initialize(array $config) 
        parent::initialize($config); 
        $this->table('user_masters');     
        $this->hasOne('person_masters', [
            'className' => 'person_masters',
            'foreign_key'=>'user_master_id',
            'dependent' => true
        ]);
    

当我在控制器中使用时: $this->UserMasters->get($id); 它只产生 user_masters 表数据.. 那么我怎样才能获得关联表数据呢?

【问题讨论】:

【参考方案1】:

使用包含()

从手册中复制粘贴:

当你想加载主模型时,你应该使用 contains(),并且 其相关数据。而 contains() 将让您应用额外的 加载关联的条件,您不能约束 基于关联的主要模型。有关更多详细信息 contains(),看看 Eager Loading Associations。

// In a controller or table method.

// As an option to find()
$query = $articles->find('all', ['contain' => ['Authors', 'Comments']]);

// As a method on the query object
$query = $articles->find('all');
$query->contain(['Authors', 'Comments']);

Read the manual 在开始尝试和错误驱动的开发之前! 如果您在此之前完成了手册中的教程之一,那就很清楚了。所以现在就去做,它们会涵盖更多的基础知识。

【讨论】:

对于检索关联数据,每次在查询中使用“包含”?有没有什么方法可以让我们在每次不使用“包含”的情况下检索关联数据?我们可以在 Model 中全局定义它吗?? Recursive 已被删除,因为一直包含 assoc 是不好的做法。它们应该真正需要时包含。但是,您可以在 beforeFind() 回调中添加疯狂,请参阅 -> book.cakephp.org/3.0/en/orm/table-objects.html#beforefind 您介意将答案标记为正确吗?谢谢。

以上是关于cakephp3中的递归?的主要内容,如果未能解决你的问题,请参考以下文章

访问 cakephp3 控制器中的非关联表

cakephp3.7 测试中的 CSRF 令牌不匹配

一对多 CakePHP3(通过匹配表)

markdown [cakephp:CakePHP3注意事项] CakePHP3基本知识说明。 #cakephp

CakePHP3:newEntity()Nulls Date

如果管理员在cakephp3.x中将其停用,如何限制db中的数据保存?