CakePHP: Как перечислить только те сообщения, которые были опубликованы самим пользователем (один пользователь) - PullRequest
0 голосов
/ 31 января 2011

На этой странице пользователь увидит список ссылок, которые он сам опубликовал, не включая остальные, которые были размещены другими. Я нахожусь в процессе написания функции в одной из моих моделей, например, Новости

Я пытаюсь использовать идею инструментальной панели: http://nuts -and-bolts-of-cakephp.com / 2008/12/16 / как создать информационную панель для ваших целей -Применение-в-CakePHP /

Я создал контроллер панели управления как:

function index () {     
           $this->set('news', ClassRegistry::init('News')->showmy());
          }

// В моих новостях :: model у меня есть функция showmy ()

function showmy() {
         $userid = $this->Session->read('Auth.User.id');
         $mynews = $this->News->find('all', array('conditions' => array('News.user_id' => '$userid')));
         $this->set('mynews', $mynews);      
    }   

// Я получаю следующую ошибку:

Undefined property: News::$Session [APP\models\news.php, line 7]

Fatal error: Call to a member function read() on a non-object in C:\...\app\models\news.php on line 7

Я знаю, что с функцией showmy что-то ужасно не так, может кто-то пролить свет на то, как нам написать функцию, которая получает сообщения только одним пользователем? или если проблемы незначительные, исправьте функцию выше?

Ответы [ 2 ]

2 голосов
/ 31 января 2011

Попробуйте это

Вы не можете использовать сессию из модели, поэтому passit от контроллера

function index () {     
         $userid = $this->Session->read('Auth.User.id');
           $this->set('news', ClassRegistry::init('News')->showmy($userid ));
          }


function showmy($userid) {

         return $this->find('all', array('conditions' => array('News.user_id' => $userid)));

    }   
0 голосов
/ 31 марта 2014

Мой подход больше похож на документацию:

Допустим, у вас есть PostsController с Post Model. Когда вы делаете индекс на сообщения, это нормально, вы запрашиваете все сообщения. Но для одного пользователя, я думаю, вы имеете в виду одно действие индекса в PostsController, например:

class Post extends AppModel {
public $belongsTo = 'User'; // This way you're telling cakephp that one user can have many posts (he's posts' author)
}

class PostsController extends AppController {
    public function viewByUser() {
        $id = $this->Auth->user('id');
        $posts = $this->Post->findAllById($id);

        $this->set('posts', $posts);
    }
}

А затем, на ваш взгляд, вы строите таблицу, как для действия индекса

http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#magic-find-types

...