我正在尝试消化一个cakephp教程,昨天我卡住了。示例网站名为Jobfinds,因此我将表名称为“jobs”。
以下是JobsController的代码:
<?php
namespace App\Controller;
use App\Controller\AppController;
class JobsController extends AppController{
public $name = 'Jobs';
/*
* Default Index Method
*/
public function index() {
//Set Query Options
$options = array(
'order' => array('Jobs.created' => 'asc' ),
'limit' => 4
);
//Get Job Info
$jobs = $this->Jobs->find('all', $options);
$this->set('jobs', $jobs);
}
}
?>
此代码位于index.ctp中,但它不显示任何内容,但它应该显示。
<?php foreach($jobs as $job) : ?>
<p><?php echo $job['jobs']['title'];
?> </p>
<?php endforeach; ?>
当我举个例子时
<?php echo "something"; ?>
然后显示'某事',所以我认为必须有一个小错误,就是不能从表中获取数据。我试了太久了。因为那个我开始失去我的头发。这个教程非常棒但是使用了cakephp 2.x而且我使用的是3.x.所以在每一步我需要改变一些东西,直到现在我都成功了,但我坚持这一点。任何人都可以看到罪魁祸首在哪里?为什么它不从表中获取数据?
我在调试LOGS中没有错误。
内部循环中的print_r($ job)如下所示
Cake\ORM\Entity Object ( [id] => 1 [category_id] => 7 [user_id] => 1 [type_id] => 1 [company_name] => Tech Guy Computer Services [title] => Senior Graphic Designer [description] =>
Lorem ipsum dolor sit amet(more description in lorem ipsum
[city] => Burlington [state] => MA [contact_email] => contact@employer.com [created] => Cake\I18n\FrozenTime Object ( [time] => 2014-07-14T00:00:00+00:00 [timezone] => UTC [fixedNowTime] => ) [[new]] => [[accessible]] => Array ( [*] => 1 ) [[dirty]] => Array ( ) [[original]] => Array ( ) [[virtual]] => Array ( ) [[errors]] => Array ( ) [[invalid]] => Array ( ) [[repository]] => Jobs )
Cake\ORM\Entity Object ( [id] => 2 [category_id] => 7 [user_id] => 1 [type_id] => 1 [company_name] => Tech Guy Computer Services [title] => UX Designer [description] =>
答案 0 :(得分:0)
试试这段代码,它会帮助你。
<?php foreach($jobs as $job) : ?>
<p><?php echo $job['title'];?></p>
<?php endforeach; ?>
谢谢!
答案 1 :(得分:0)
在foreach($jobs as $job)
中,此处$job
是实体对象,而不是简单数组。您可以按$job->title
检索标题值。你的代码应该是
<?php foreach($jobs as $job) : ?>
<p><?php echo $job->title;?></p>
<?php endforeach; ?>
答案 2 :(得分:0)
CakePhp 3完全基于ORM。对象关系映射。
因此,您可以使用$job->title;
另请注意,它也不会提供实际的型号名称。如果你想获得数组,那么在控制器的查询结束时你可以使用
$jobs = $this->Jobs->find('all', $options)->toArray();
确实你应该使用
$jobs = $this->Jobs->find()->limit(4)->order(array('Jobs.created' => 'asc' ))->toArray();