私は、テーブルには、次の属性を持つ、Bookings
と呼ばれるがあります。CakePHPの3 - 属性は、テーブルに表示されない
id
artist_id
- 外部キーstatus
amount
created
modified
それはテーブルArtists
、Payments
とSessions
と関連しています。ビューで
、私は、以下の条件を満たしてBookings
を表示するには、jQueryのプラグインのDataTableを使用しています
- 彼ら
status
は - 関連するテーブル
Session's
属性DATE_ENDがより大きくなければなりません「確認」に等しいです現在の日付。
しかし、ページを読み込むと、amount
の属性は$ 0.00として表示されます。本質的にはnullですが、それ以外はすべて正常に表示されます。 CakePHP変数では、属性amount
もブランクとして表示されます。しかし、MySQLでは、amount
は空白ではないことが明確に述べられています。以下は
私の見解からの抜粋です:
<table class="bookingsTables display" id="confirmedTable">
<thead>
<tr>
<th scope="col"><?= $this->Paginator->sort('name', 'Artist') ?></th>
<th scope="col"><?= $this->Paginator->sort('date_start', 'Start Date') ?></th>
<th scope="col"><?= $this->Paginator->sort('date_end', 'End Date') ?></th>
<th scope="col"><?= $this->Paginator->sort('studio_id', 'Studio') ?></th>
<th scope="col"><?= $this->Paginator->sort('engineer_id', 'Engineer') ?></th>
<th scope="col"><?= $this->Paginator->sort('amount', 'Total Amount') ?></th>
<th scope="col"><?= $this->Paginator->sort('status', 'Payment Status') ?></th>
<th scope="col" class="actions"><?= __('Actions') ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($bookingsConfirmed as $booking): ?>
<tr>
<td><?= $booking->has('artist') ? h($booking->artist->name) : '' ?></td>
<td><?= $booking->has('session') ? h($booking->session->date_start) : '' ?></td>
<td><?= $booking->has('session') ? h($booking->session->date_end) : '' ?></td>
<td><?= $booking->session->has('studio') ? h($booking->session->studio->name) : '' ?></td>
<td><?= $booking->session->has('engineer') ? h($booking->session->engineer->eng_firstname . ' ' . $booking->session->engineer->eng_lastname) :'' ?></td>
<td><?= h($this->Number->currency($booking->amount)) ?></td>
<td><?= h($paymentStatusLookup[$booking->id]); ?></td>
<td class="actions">
<?= $this->Html->link(__('Update'), ['action' => 'bookingconfirm', $booking->id]) ?>
<?= $this->Html->link(__('View'), ['action' => 'view', $booking->id]) ?>
<p>Cancel</p>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
$ paymentStatusLookup [$ booking->のid];
上記の行は、お支払いの仮想ステータスですが、これは私の金額の価値がない理由とは関係ありません。私はテーブルからこの行を削除して何か違いがあるかどうかを確認しました(わずかに条件は異なりますが、類似のものを表示する2つのDataTableがあり、amount
がこれらのテーブルに問題なく表示されます)。
ます$ this-> Number->通貨
これはちょうど$ 0.00にヌル/空のフィールドを回しました。私のコントローラで
、この特定のテーブルの該当する検索:私の予約テーブルに
$bookingsConfirmed = $this->Bookings->find('all',[
'contain' => ['Sessions', 'Sessions.Studios', 'Sessions.Engineers', 'Artists'],
'conditions'=>['status' => 'confirmed', date_end >=' => date('Y-m-d H:i:s', Time::now()->getTimestamp())],
'order'=>['Bookings.created'=>'ASC']
]);
、validationDefault機能で:
public function validationDefault(Validator $validator)
{
$validator
->integer('id')
->allowEmpty('id', 'create');
$validator
->requirePresence('status', 'create')
->notEmpty('status');
$validator
->decimal('amount')
->allowEmpty('amount');
return $validator;
}
私は最近予約モデルのケーキベークを行いました同じように。
更新:
object(Cake\ORM\Query) {
'(help)' => 'This is a Query object, to get the results execute or iterate it.',
'sql' => 'SELECT Bookings.id AS `Bookings__id`, Bookings.artist_id AS `Bookings__artist_id`, Bookings.status AS `Bookings__status`, Bookings.amount AS `Bookings__amount`, Bookings.created AS `Bookings__created`, Bookings.modified AS `Bookings__modified`, Sessions.id AS `Sessions__id`, Sessions.booking_id AS `Sessions__booking_id`, Sessions.studio_id AS `Sessions__studio_id`, Sessions.engineer_id AS `Sessions__engineer_id`, Sessions.guestengineer_id AS `Sessions__guestengineer_id`, Sessions.date_start AS `Sessions__date_start`, Sessions.date_end AS `Sessions__date_end`, Sessions.starttime AS `Sessions__starttime`, Sessions.hours AS `Sessions__hours`, Sessions.session_genre AS `Sessions__session_genre`, Sessions.no_people AS `Sessions__no_people`, Sessions.studio_usage AS `Sessions__studio_usage`, Sessions.otherpeople_req AS `Sessions__otherpeople_req`, Sessions.special_req AS `Sessions__special_req`, Sessions.created AS `Sessions__created`, Sessions.modified AS `Sessions__modified`, Studios.id AS `Studios__id`, Studios.name AS `Studios__name`, Studios.description AS `Studios__description`, Studios.created AS `Studios__created`, Studios.modified AS `Studios__modified`, Engineers.id AS `Engineers__id`, Engineers.user_id AS `Engineers__user_id`, Engineers.eng_firstname AS `Engineers__eng_firstname`, Engineers.eng_lastname AS `Engineers__eng_lastname`, Engineers.eng_email AS `Engineers__eng_email`, Engineers.eng_phoneno AS `Engineers__eng_phoneno`, Engineers.eng_status AS `Engineers__eng_status`, Engineers.rate AS `Engineers__rate`, Engineers.created AS `Engineers__created`, Engineers.modified AS `Engineers__modified`, Artists.id AS `Artists__id`, Artists.name AS `Artists__name`, Artists.cp_id AS `Artists__cp_id`, Artists.user_id AS `Artists__user_id`, Artists.genre AS `Artists__genre`, Artists.created AS `Artists__created`, Artists.modified AS `Artists__modified` FROM bookings Bookings LEFT JOIN sessions Sessions ON Bookings.id = (Sessions.booking_id) INNER JOIN studios Studios ON Studios.id = (Sessions.studio_id) LEFT JOIN engineers Engineers ON Engineers.id = (Sessions.engineer_id) INNER JOIN artists Artists ON Artists.id = (Bookings.artist_id) WHERE (status = :c0 AND Sessions.date_end < :c1) ORDER BY Bookings.created ASC',
'params' => [
':c0' => [
'value' => 'confirmed',
'type' => 'string',
'placeholder' => 'c0'
],
':c1' => [
'value' => '20/2/17, 4:34 p02',
'type' => null,
'placeholder' => 'c1'
]
],
'defaultTypes' => [
'Bookings__id' => 'integer',
'Bookings.id' => 'integer',
'id' => 'integer',
'Bookings__artist_id' => 'integer',
'Bookings.artist_id' => 'integer',
'artist_id' => 'integer',
'Bookings__status' => 'string',
'Bookings.status' => 'string',
'status' => 'string',
'Bookings__amount' => 'decimal',
'Bookings.amount' => 'decimal',
'amount' => 'decimal',
'Bookings__created' => 'datetime',
'Bookings.created' => 'datetime',
'created' => 'datetime',
'Bookings__modified' => 'datetime',
'Bookings.modified' => 'datetime',
'modified' => 'datetime',
'Sessions__id' => 'integer',
'Sessions.id' => 'integer',
'Sessions__booking_id' => 'integer',
'Sessions.booking_id' => 'integer',
'booking_id' => 'integer',
'Sessions__studio_id' => 'integer',
'Sessions.studio_id' => 'integer',
'studio_id' => 'integer',
'Sessions__engineer_id' => 'integer',
'Sessions.engineer_id' => 'integer',
'engineer_id' => 'integer',
'Sessions__guestengineer_id' => 'integer',
'Sessions.guestengineer_id' => 'integer',
'guestengineer_id' => 'integer',
'Sessions__date_start' => 'date',
'Sessions.date_start' => 'date',
'date_start' => 'date',
'Sessions__date_end' => 'date',
'Sessions.date_end' => 'date',
'date_end' => 'date',
'Sessions__starttime' => 'time',
'Sessions.starttime' => 'time',
'starttime' => 'time',
'Sessions__hours' => 'integer',
'Sessions.hours' => 'integer',
'hours' => 'integer',
'Sessions__session_genre' => 'text',
'Sessions.session_genre' => 'text',
'session_genre' => 'text',
'Sessions__no_people' => 'integer',
'Sessions.no_people' => 'integer',
'no_people' => 'integer',
'Sessions__studio_usage' => 'text',
'Sessions.studio_usage' => 'text',
'studio_usage' => 'text',
'Sessions__otherpeople_req' => 'text',
'Sessions.otherpeople_req' => 'text',
'otherpeople_req' => 'text',
'Sessions__special_req' => 'text',
'Sessions.special_req' => 'text',
'special_req' => 'text',
'Sessions__created' => 'datetime',
'Sessions.created' => 'datetime',
'Sessions__modified' => 'datetime',
'Sessions.modified' => 'datetime',
'Studios__id' => 'integer',
'Studios.id' => 'integer',
'Studios__name' => 'string',
'Studios.name' => 'string',
'name' => 'string',
'Studios__description' => 'text',
'Studios.description' => 'text',
'description' => 'text',
'Studios__created' => 'datetime',
'Studios.created' => 'datetime',
'Studios__modified' => 'datetime',
'Studios.modified' => 'datetime',
'Engineers__id' => 'integer',
'Engineers.id' => 'integer',
'Engineers__user_id' => 'integer',
'Engineers.user_id' => 'integer',
'user_id' => 'integer',
'Engineers__eng_firstname' => 'string',
'Engineers.eng_firstname' => 'string',
'eng_firstname' => 'string',
'Engineers__eng_lastname' => 'string',
'Engineers.eng_lastname' => 'string',
'eng_lastname' => 'string',
'Engineers__eng_email' => 'string',
'Engineers.eng_email' => 'string',
'eng_email' => 'string',
'Engineers__eng_phoneno' => 'integer',
'Engineers.eng_phoneno' => 'integer',
'eng_phoneno' => 'integer',
'Engineers__eng_status' => 'string',
'Engineers.eng_status' => 'string',
'eng_status' => 'string',
'Engineers__rate' => 'decimal',
'Engineers.rate' => 'decimal',
'rate' => 'decimal',
'Engineers__created' => 'datetime',
'Engineers.created' => 'datetime',
'Engineers__modified' => 'datetime',
'Engineers.modified' => 'datetime',
'Artists__id' => 'integer',
'Artists.id' => 'integer',
'Artists__name' => 'string',
'Artists.name' => 'string',
'Artists__cp_id' => 'integer',
'Artists.cp_id' => 'integer',
'cp_id' => 'integer',
'Artists__user_id' => 'integer',
'Artists.user_id' => 'integer',
'Artists__genre' => 'text',
'Artists.genre' => 'text',
'genre' => 'text',
'Artists__created' => 'datetime',
'Artists.created' => 'datetime',
'Artists__modified' => 'datetime',
'Artists.modified' => 'datetime'
],
'decorators' => (int) 0,
'executed' => false,
'hydrate' => true,
'buffered' => true,
'formatters' => (int) 0,
'mapReducers' => (int) 0,
'contain' => [
'Sessions' => [
'Studios' => [],
'Engineers' => []
],
'Artists' => []
],
'matching' => [],
'extraOptions' => [],
'repository' => object(App\Model\Table\BookingsTable) {
'registryAlias' => 'Bookings',
'table' => 'bookings',
'alias' => 'Bookings',
'entityClass' => 'App\Model\Entity\Booking',
'associations' => [
(int) 0 => 'artists',
(int) 1 => 'payments',
(int) 2 => 'sessions'
],
'behaviors' => [
(int) 0 => 'Timestamp'
],
'defaultConnection' => 'default',
'connectionName' => 'default'
}
}
更新:デバッグ($予約)1つのレコードを使用して、次のとおりです。
object(App\Model\Entity\Booking) {
'id' => (int) 133,
'artist_id' => (int) 6,
'status' => 'confirmed',
'amount' => '',
'created' => object(Cake\I18n\FrozenTime) {
'time' => '2017-02-20T16:27:15+00:00',
'timezone' => 'UTC',
'fixedNowTime' => false
},
'modified' => object(Cake\I18n\FrozenTime) {
'time' => '2017-02-20T16:32:08+00:00',
'timezone' => 'UTC',
'fixedNowTime' => false
},
'artist' => object(App\Model\Entity\Artist) {
'id' => (int) 6,
'name' => 'test1',
'cp_id' => (int) 6,
'user_id' => (int) 25,
'genre' => 'Anything really.',
'created' => object(Cake\I18n\FrozenTime) {
'time' => '2017-01-30T08:57:41+00:00',
'timezone' => 'UTC',
'fixedNowTime' => false
},
'modified' => object(Cake\I18n\FrozenTime) {
'time' => '2017-01-30T08:57:41+00:00',
'timezone' => 'UTC',
'fixedNowTime' => false
},
'[new]' => false,
'[accessible]' => [
'*' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Artists'
},
'session' => object(App\Model\Entity\Session) {
'id' => (int) 100,
'booking_id' => (int) 133,
'studio_id' => (int) 2,
'engineer_id' => (int) 2,
'guestengineer_id' => null,
'date_start' => object(Cake\I18n\FrozenDate) {
'time' => '2017-02-28T00:00:00+00:00',
'timezone' => 'UTC',
'fixedNowTime' => false
},
'date_end' => object(Cake\I18n\FrozenDate) {
'time' => '2017-03-14T00:00:00+00:00',
'timezone' => 'UTC',
'fixedNowTime' => false
},
'starttime' => null,
'hours' => null,
'session_genre' => 'tests',
'no_people' => (int) 5,
'studio_usage' => 'tests',
'otherpeople_req' => '',
'special_req' => '',
'created' => object(Cake\I18n\FrozenTime) {
'time' => '2017-02-20T16:27:15+00:00',
'timezone' => 'UTC',
'fixedNowTime' => false
},
'modified' => object(Cake\I18n\FrozenTime) {
'time' => '2017-02-20T16:32:08+00:00',
'timezone' => 'UTC',
'fixedNowTime' => false
},
'engineer' => object(App\Model\Entity\Engineer) {
'id' => (int) 2,
'user_id' => (int) 18,
'eng_firstname' => 'test',
'eng_lastname' => 'test',
'eng_email' => '[email protected]',
'eng_phoneno' => (int) 256,
'eng_status' => 'staff',
'rate' => (float) 51,
'created' => object(Cake\I18n\FrozenTime) {
'time' => '2016-10-11T09:27:09+00:00',
'timezone' => 'UTC',
'fixedNowTime' => false
},
'modified' => object(Cake\I18n\FrozenTime) {
'time' => '2016-10-11T09:27:09+00:00',
'timezone' => 'UTC',
'fixedNowTime' => false
},
'[new]' => false,
'[accessible]' => [
'*' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Engineers'
},
'studio' => object(App\Model\Entity\Studio) {
'id' => (int) 2,
'name' => 'Studio B',
'description' => 'Studio B',
'created' => object(Cake\I18n\FrozenTime) {
'time' => '2016-10-11T00:04:28+00:00',
'timezone' => 'UTC',
'fixedNowTime' => false
},
'modified' => object(Cake\I18n\FrozenTime) {
'time' => '2016-10-11T00:04:28+00:00',
'timezone' => 'UTC',
'fixedNowTime' => false
},
'[new]' => false,
'[accessible]' => [
'*' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Studios'
},
'[new]' => false,
'[accessible]' => [
'*' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Sessions'
},
'[new]' => false,
'[accessible]' => [
'*' => true
],
'[dirty]' => [
'amount' => true
],
'[original]' => [
'amount' => (float) 726.95
],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Bookings'
}
$予約記録(すなわち 'debug($ booking)')のデバッグを試み、ここに結果を投稿します – arilia
私はデバッグを試みました)しかし、それは私の何かを与えていない、おそらく私のコントローラにその変数を持っていないため。 $ bookingsConfirmedのデバッグは私がOPで追加した入力を与えました。 Bookings.amountは小数点タイプを使用して表示されます。 – mistaq
あなたはその変数をforeachループ内に持っています。 – arilia