gpt4 book ai didi

cakephp - 仅从 CakePHP 中的关联模型中选择某些字段

转载 作者:行者123 更新时间:2023-12-02 18:35:36 25 4
gpt4 key购买 nike

我有以下关系:

  • User hasMany UserNotification
  • Notification hasMany UserNotification
  • UserNotification 属于 UserNotification

  • notifications 表包含以下列:idsubjectcontent

  • users_notifications 表包含以下列:iduser_idnotification_idstatus

UsersController中,如何检索来自某个用户的所有通知? (这意味着,对于每个通知,所有这些详细信息:主题、内容和状态)。

此外,如何限制返回的字段数量?当我从 UsersController 发出请求时,我不想从 find() 数组中的用户模型中检索任何字段。

谢谢!

最佳答案

为了从 UsersController 检索通知,只需执行以下操作:

$notifications = $this->User->Notification->find('all');

基本上,您可以使用关联来访问通知模型。

接下来,为了限制字段,您可以通过两种方式来实现。首先是将 $recursive 属性设置为 -1。

如果您希望它在整个应用程序中的任何地方发生,请在通知模型中使用此行。如果您希望每个模型都发生这种情况,请在 AppModel 中使用它。

var $recursive = -1;

您还可以在上述 find() 语句之前放置以下行:

$this->User->Notification->recursive = -1;

第二种方法是使用 Containable行为。

将以下行放入您的通知模型(或用于全局效果的 AppModel)中:

var $actsAs = array('Containable');

现在,默认情况下,它不会提取用户模型。但如果您希望将其与通知数据一起提取,那么您的查询应如下所示:

$notifications = $this->User->Notification->find('all', array(
'contain' => array('User')
);

希望这有帮助!

关于cakephp - 仅从 CakePHP 中的关联模型中选择某些字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4292285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com