0

我有三个模型

  1. 用户
  2. 注意(与帖子相同)
  3. 友谊

我正在尝试检索我订阅的用户共享的帖子。

我在 UsersController 中所做的正是我首先检索了我所有朋友的列表

 $lof=$this->User->Friendship->find('all', array('conditions'=>array('Friendship.user_from'=>$this->Auth->user('id')), 'contain'=>array('Friendship.user_to')));

现在我正在尝试显示我朋友分享的所有帖子

$allnotes= $this->User->Note->find('all', array('conditions'=>array('Note.user_id'=>array($lof)), 'order' => array('Note.created DESC')));

这给了我一个错误

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Array' in 'where clause'

SQL Query: SELECT `Note`.`id`, `Note`.`user_id`, `Note`.`notes`, `Note`.`created`,     `User`.`id`, `User`.`name`, `User`.`email`, `User`.`username`, `User`.`password`, `User`.`gender`, `User`.`dob`, `User`.`image`, `User`.`tmp_name`, `User`.`search` FROM `fyp`.`notes` AS `Note` LEFT JOIN `fyp`.`users` AS `User` ON (`Note`.`user_id` = `User`.`id`) WHERE `Note`.`user_id` = (Array) ORDER BY `Note`.`created` DESC

我知道我正在尝试添加一个数组,但是当我尝试像这样的相同查找查询时,它起作用了。

$allnotes= $this->User->Note->find('all', array('conditions'=>array('Note.user_id'=>array(114,115)), 'order' => array('Note.created DESC')));

在我的查询中,仅从 Friendship 表中获取 user_to 的值并将其分配为等于 Note.user_id 的解决方案到底是什么。

4

1 回答 1

1

问题是您的$lof变量不包含 id 数组。它将包含来自友谊模型的完整数据数组。如果您查看$lof变量的值,您应该明白我的意思。您可以使用该debug()功能执行此操作。

要做你想做的事,你必须使用“列表”查找方法并使用该Friendship.user_to字段。像这样:

$lof = $this->User->Friendship->find('list', array(
    'fields' => array('Friendship.id', 'Friendship.user_to'),
    'conditions' => array(
        'Friendship.user_from' => $this->Auth->user('id')
));

然后找到你现在可以使用的所有笔记

$allnotes = $this->User->Note->find('all', array(
    'conditions' => array(
         'Note.user_id' => $lof
     ),
     'order' => array('Note.created DESC')
));

您可以在CakePHP 的食谱中阅读更多关于不同查找方法的信息(我已链接到列表一)

于 2012-11-05T14:50:51.920 回答