php-テーブル1に関連するテーブル2のすべてのデータを印刷する方法
2つのテーブルユーザーとサブジェクトがあります
usersには、username、id、emailなどのフィールドがあります。 サブジェクトには、このフィールドmath、english、id、user_id、
があります。 / UsersController.php /
/ * grade.ctp /
ビューをクリックすると、以下の成績データがpr($ users)を使用して出力されます
pr($ users);を試みます。 grade.ctpビューで、上記のデータを取得しました。これは、サブジェクトフィールドを含む正しいデータです。しかし、grade.ctpビューでそれを印刷する方法 public function grade($id = null)
{
$users = $this->Users->get($id, [
'contain' => [
'Subjects'
]
]);
$this->set('users', $users);
$this->set('_serialize', ['user']);
//pr($users);exit;
}
[![<div class="users view large-10 medium-9 columns">
<?php
//pr($users);exit;
foreach ($users as $user): ?>
<div class="row">
<div class="large-5 columns strings">
<h6 class="subheader"><?= __('Username') ?></h6>
<p><?= h($user->username) ?></p>
<p><?php echo $this->user->username;?></p>
</div>
<div class="large-2 columns numbers end">
<h6 class="subheader"><?= __('Id') ?></h6>
<p><?= $this->Number->format($user->id) ?></p>
</div>
</div>
<?php endforeach; ?>
</div>][1]][1]
App\Model\Entity\User Object
(
[username] => Tyra
[password] => 97a8afcf419cc231e1bdcd8584b0a246
[id] => 6
[email] => [email protected]
[profile_pic] => Resource id #196
[destination] =>
[created] =>
[subjects] => Array
(
[0] => App\Model\Entity\Subject Object
(
[math] => 100
[english] => 100
[history] => 100
[science] => 100
[id] => 11
[user_id] => 6
[[new]] =>
[[accessible]] => Array
(
[*] => 1
)
[[dirty]] => Array
(
)
[[original]] => Array
(
)
[[virtual]] => Array
(
)
[[errors]] => Array
(
)
[[repository]] => Subjects
)
)
[[new]] =>
[[accessible]] => Array
(
[*] => 1
)
[[dirty]] => Array
(
)
[[original]] => Array
(
)
[[virtual]] => Array
(
)
[[errors]] => Array
(
)
[[repository]] => Users
)
答え :
解決策:
データはオブジェクト形式であるため、 簡単にこれを行うことができます:
<?php
echo $users->username; // prints username
echo $users->email;
?>
そして主題を印刷するには:
<?php
if(!empty($users->subjects)) {
foreach($users->subjects as $subject) {
echo $subject->math; // prints math
echo $subject->english; // etc
}
}
?>
しばらくの間、ブログチュートリアルを試して、これらに慣れることができます。
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。