2016-10-04 12 views
0

私はcakephpのチュートリアルの1つと消化しようとしています。サンプルWebサイトはJobfindsと呼ばれているので、テーブル名は「jobs」です。Cakephp - 'foreach'を使ってデータを表示すると値が返されない

<?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であるが、それは何も表示されませんが、それが必要:ここ

JobsControllerからのコードがあります。

<?php foreach($jobs as $job) : ?> 
<p><?php echo $job['jobs']['title']; 
?> </p> 
<?php endforeach; ?> 

私は例えば

<?php echo "something"; ?> 

を入れるときに「何かが」私はテーブルからデータを取得しないさだけで小さなミスがなければならないことを考え出し表示されています。私は長年試していた。私はそれのために私の髪を失い始めている。このチュートリアルはかなり素晴らしいですが、cakephp 2.xが使われていて、私は3.xを使っています。だから、ステップごとに何かを変える必要があります。今までは成功しましたが、私はこのために頑張りました。誰が原因を見つけられますか?なぜそれがテーブルからデータをフェッチしないのですか?

デバッグログにエラーはありません。ループ内

ますprint_r($ジョブ)が、それはだ、このコードがお手伝いします試してみてください

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] => [email protected] [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

私はループ – Shahrukh

+0

の内側に与えているものをしますprint_r($ジョブ)参照を使用する必要があります

$jobs = $this->Jobs->find('all', $options)->toArray();

を使用することができます私の投稿を編集し、最後にprint_r($ jobs)の結果を貼り付けた –

+0

echo $ job-> title; cakephp 3のドキュメントを読む – Salines

答えて

0

以下のようになります。

<?php foreach($jobs as $job) : ?> 
<p><?php echo $job['title'];?></p> 
<?php endforeach; ?> 

ありがとうございます!

+0

ありがとう、それは動作します。私は今、['タイトル']の前に['仕事']は必要ないと思っています。なぜ私は数時間前にそれが分からなかったのだろうか。 –

+0

ありがとう。答えが正しい場合は、その答えをチェックします。それが他の人に役立つことを願っています。 –

+0

私はコメントを書きましたが、15ポイント以下でちょっと新しくなったので、まだ録画されていますが、まだ表示されていません。 –

0

foreach($jobs as $job)では、ここで$jobは単純な配列ではありません。タイトルの値は$job->titleで取得できます。あなたのコードは

<?php foreach($jobs as $job) : ?> 
<p><?php echo $job->title;?></p> 
<?php endforeach; ?> 
0

でなければなりません.CakePhp 3はORMに完全に基づいています。オブジェクトリレーショナルマッピング。

だから、$job->title;

はまた、それは同様に、実際のモデル名を与えないことに注意して使用してアクセスすることができます。あなたがコントローラでクエリの最後に、配列を取得したい場合、あなたは確かにあなたが $jobs = $this->Jobs->find()->limit(4)->order(array('Jobs.created' => 'asc'))->toArray();

関連する問題