我有三个模特
我正在尝试检索由我订阅的用户共享的帖子。
我在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的解决方案究竟是什么。
答案 0 :(得分:1)
问题是你的$lof
变量不包含id的数组。它将包含来自友谊模型的完整数据。如果您查看$lof
变量的值,您应该看到我的意思。您可以使用debug()
功能执行此操作。
要执行您想要执行的操作,您必须使用“list”查找方法并使用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')
));
中详细了解不同的查找方法(我已链接到列表中)