0

我很想做这样的查询:

$this->set('title', 'Lista de Posts');
$Posts = $this->Post->query("SELECT id,Titulo,Data,Hora,RIGHT(Conteudo,200) AS Conteudo,Usuario FROM posts;");
$this->set('posts', $Posts);
$this->layout = 'home';

但是在视图中我收到了这条消息:

注意(8):未定义索引:Post [APP/View/Posts/home.ctp, line 4]

但是使用 $Posts = $this->Post->find('all') 它可以工作。

请任何人都可以帮助我在蛋糕 php 中使用 RIGHT(Conteudo,200) 吗?

谢谢

4

3 回答 3

0

如果您是 Cake 新手,请忘记“查询”方法。它适用于非常特殊的情况。

在您的 PostsController 中:

class PostsController extends AppController {

    var $helpers = array('Text');

    public function index() {
        $posts = $this->paginate();
        $this->set('posts', $posts);
    }
}

在您看来:

foreach($posts as $post) {
  echo $this->Text->tail($post['Post']['conteudo'], 200);
}
于 2013-08-16T09:08:49.760 回答
0

我无法确定是什么导致了您的视图中的通知,因为您没有发布足够的代码。

你想这样做吗?echo $posts['Post']['Conteudo']

鉴于您的查询,RIGHT(Conteudo,200) 将在,$posts[0]['Conteudo']因为 Cake 不知道虚函数来自哪个表。

查看关于虚拟字段的 CakePHP 文档,了解有关使用 SQL 函数和虚拟字段的信息。

这是一个简短的(未经测试的)代码片段,可能会有所帮助:

$this->virtualFields = array( 'ConteudoRight' => 'RIGHT(Conteudo,200)' );

$Posts = $this->Post->find('all', array(
   'fields' => array( 'id', 'RIGHT(Conteudo,200) AS Post__ConteudoRight' )
));
于 2013-08-15T23:12:42.040 回答
0

在控制器中使用 pr($Posts) 只是为了测试结果。它会让你知道你在 2 种情况下得到的结果的差异。

于 2013-08-16T13:42:13.420 回答