2017-02-17 3 views
0

나는 테이블이 다음과 같은 속성을 가진, Bookings라고 있습니다CakePHP의 3 - 속성은 테이블에 표시되지

  • id
  • artist_id - 외래 키
  • status
  • amount
  • created
  • modified

는 그것은 테이블 Artists, PaymentsSessions와 연결되어 있습니다.

  • 그들의 status
  • 관련 테이블 Session's 속성 DATE_END보다 커야합니다 '확인'과 같다 :보기에

    , 나는 다음과 같은 조건을 충족 Bookings를 표시 할 jQuery 플러그인의 DataTables를 사용했다 현재 날짜.

그러나 페이지를로드 할 때 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 [$ 예약 -> ID];

위의 행은 지불을위한 가상 상태이지만 내 금액 값이 누락 된 이유와 관련이 있는지는 잘 모르겠습니다. 내 테이블에서이 라인을 제거하여 차이가 있는지 확인했습니다. (약간 다른 조건 임에도 불구하고 비슷한 것을 보여주는 두 개의 다른 DataTable이 있고 amount이 테이블에 정상적으로 표시됨)하지만 그렇지 않았습니다.

$ this-> 번호 -> 통화

이것은 단지 $ 0.00에 널 (null)/빈 필드를 돌았 다. 내가 예약 모델의 최근 케이크 베이킹을했다

public function validationDefault(Validator $validator) 
    { 
     $validator 
      ->integer('id') 
      ->allowEmpty('id', 'create'); 

     $validator 
      ->requirePresence('status', 'create') 
      ->notEmpty('status'); 

     $validator 
      ->decimal('amount') 
      ->allowEmpty('amount'); 

     return $validator; 
    } 

: 내 컨트롤러에서

이 특정 테이블에 해당 찾기 다음 validationDefault 기능 내 예약 표에서

$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'] 
     ]); 

, 게다가.

업데이트 :

object(Cake\ORM\Query) { 

    '(help)' =&gt; 'This is a Query object, to get the results execute or iterate it.', 
    'sql' =&gt; '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 &lt; :c1) ORDER BY Bookings.created ASC', 
    'params' =&gt; [ 
     ':c0' =&gt; [ 
      'value' =&gt; 'confirmed', 
      'type' =&gt; 'string', 
      'placeholder' =&gt; 'c0' 
     ], 
     ':c1' =&gt; [ 
      'value' =&gt; '20/2/17, 4:34 p02', 
      'type' =&gt; null, 
      'placeholder' =&gt; 'c1' 
     ] 
    ], 
    'defaultTypes' =&gt; [ 
     'Bookings__id' =&gt; 'integer', 
     'Bookings.id' =&gt; 'integer', 
     'id' =&gt; 'integer', 
     'Bookings__artist_id' =&gt; 'integer', 
     'Bookings.artist_id' =&gt; 'integer', 
     'artist_id' =&gt; 'integer', 
     'Bookings__status' =&gt; 'string', 
     'Bookings.status' =&gt; 'string', 
     'status' =&gt; 'string', 
     'Bookings__amount' =&gt; 'decimal', 
     'Bookings.amount' =&gt; 'decimal', 
     'amount' =&gt; 'decimal', 
     'Bookings__created' =&gt; 'datetime', 
     'Bookings.created' =&gt; 'datetime', 
     'created' =&gt; 'datetime', 
     'Bookings__modified' =&gt; 'datetime', 
     'Bookings.modified' =&gt; 'datetime', 
     'modified' =&gt; 'datetime', 
     'Sessions__id' =&gt; 'integer', 
     'Sessions.id' =&gt; 'integer', 
     'Sessions__booking_id' =&gt; 'integer', 
     'Sessions.booking_id' =&gt; 'integer', 
     'booking_id' =&gt; 'integer', 
     'Sessions__studio_id' =&gt; 'integer', 
     'Sessions.studio_id' =&gt; 'integer', 
     'studio_id' =&gt; 'integer', 
     'Sessions__engineer_id' =&gt; 'integer', 
     'Sessions.engineer_id' =&gt; 'integer', 
     'engineer_id' =&gt; 'integer', 
     'Sessions__guestengineer_id' =&gt; 'integer', 
     'Sessions.guestengineer_id' =&gt; 'integer', 
     'guestengineer_id' =&gt; 'integer', 
     'Sessions__date_start' =&gt; 'date', 
     'Sessions.date_start' =&gt; 'date', 
     'date_start' =&gt; 'date', 
     'Sessions__date_end' =&gt; 'date', 
     'Sessions.date_end' =&gt; 'date', 
     'date_end' =&gt; 'date', 
     'Sessions__starttime' =&gt; 'time', 
     'Sessions.starttime' =&gt; 'time', 
     'starttime' =&gt; 'time', 
     'Sessions__hours' =&gt; 'integer', 
     'Sessions.hours' =&gt; 'integer', 
     'hours' =&gt; 'integer', 
     'Sessions__session_genre' =&gt; 'text', 
     'Sessions.session_genre' =&gt; 'text', 
     'session_genre' =&gt; 'text', 
     'Sessions__no_people' =&gt; 'integer', 
     'Sessions.no_people' =&gt; 'integer', 
     'no_people' =&gt; 'integer', 
     'Sessions__studio_usage' =&gt; 'text', 
     'Sessions.studio_usage' =&gt; 'text', 
     'studio_usage' =&gt; 'text', 
     'Sessions__otherpeople_req' =&gt; 'text', 
     'Sessions.otherpeople_req' =&gt; 'text', 
     'otherpeople_req' =&gt; 'text', 
     'Sessions__special_req' =&gt; 'text', 
     'Sessions.special_req' =&gt; 'text', 
     'special_req' =&gt; 'text', 
     'Sessions__created' =&gt; 'datetime', 
     'Sessions.created' =&gt; 'datetime', 
     'Sessions__modified' =&gt; 'datetime', 
     'Sessions.modified' =&gt; 'datetime', 
     'Studios__id' =&gt; 'integer', 
     'Studios.id' =&gt; 'integer', 
     'Studios__name' =&gt; 'string', 
     'Studios.name' =&gt; 'string', 
     'name' =&gt; 'string', 
     'Studios__description' =&gt; 'text', 
     'Studios.description' =&gt; 'text', 
     'description' =&gt; 'text', 
     'Studios__created' =&gt; 'datetime', 
     'Studios.created' =&gt; 'datetime', 
     'Studios__modified' =&gt; 'datetime', 
     'Studios.modified' =&gt; 'datetime', 
     'Engineers__id' =&gt; 'integer', 
     'Engineers.id' =&gt; 'integer', 
     'Engineers__user_id' =&gt; 'integer', 
     'Engineers.user_id' =&gt; 'integer', 
     'user_id' =&gt; 'integer', 
     'Engineers__eng_firstname' =&gt; 'string', 
     'Engineers.eng_firstname' =&gt; 'string', 
     'eng_firstname' =&gt; 'string', 
     'Engineers__eng_lastname' =&gt; 'string', 
     'Engineers.eng_lastname' =&gt; 'string', 
     'eng_lastname' =&gt; 'string', 
     'Engineers__eng_email' =&gt; 'string', 
     'Engineers.eng_email' =&gt; 'string', 
     'eng_email' =&gt; 'string', 
     'Engineers__eng_phoneno' =&gt; 'integer', 
     'Engineers.eng_phoneno' =&gt; 'integer', 
     'eng_phoneno' =&gt; 'integer', 
     'Engineers__eng_status' =&gt; 'string', 
     'Engineers.eng_status' =&gt; 'string', 
     'eng_status' =&gt; 'string', 
     'Engineers__rate' =&gt; 'decimal', 
     'Engineers.rate' =&gt; 'decimal', 
     'rate' =&gt; 'decimal', 
     'Engineers__created' =&gt; 'datetime', 
     'Engineers.created' =&gt; 'datetime', 
     'Engineers__modified' =&gt; 'datetime', 
     'Engineers.modified' =&gt; 'datetime', 
     'Artists__id' =&gt; 'integer', 
     'Artists.id' =&gt; 'integer', 
     'Artists__name' =&gt; 'string', 
     'Artists.name' =&gt; 'string', 
     'Artists__cp_id' =&gt; 'integer', 
     'Artists.cp_id' =&gt; 'integer', 
     'cp_id' =&gt; 'integer', 
     'Artists__user_id' =&gt; 'integer', 
     'Artists.user_id' =&gt; 'integer', 
     'Artists__genre' =&gt; 'text', 
     'Artists.genre' =&gt; 'text', 
     'genre' =&gt; 'text', 
     'Artists__created' =&gt; 'datetime', 
     'Artists.created' =&gt; 'datetime', 
     'Artists__modified' =&gt; 'datetime', 
     'Artists.modified' =&gt; 'datetime' 
    ], 
    'decorators' =&gt; (int) 0, 
    'executed' =&gt; false, 
    'hydrate' =&gt; true, 
    'buffered' =&gt; true, 
    'formatters' =&gt; (int) 0, 
    'mapReducers' =&gt; (int) 0, 
    'contain' =&gt; [ 
     'Sessions' =&gt; [ 
      'Studios' =&gt; [], 
      'Engineers' =&gt; [] 
     ], 
     'Artists' =&gt; [] 
    ], 
    'matching' =&gt; [], 
    'extraOptions' =&gt; [], 
    'repository' =&gt; object(App\Model\Table\BookingsTable) { 

     'registryAlias' =&gt; 'Bookings', 
     'table' =&gt; 'bookings', 
     'alias' =&gt; 'Bookings', 
     'entityClass' =&gt; 'App\Model\Entity\Booking', 
     'associations' =&gt; [ 
      (int) 0 =&gt; 'artists', 
      (int) 1 =&gt; 'payments', 
      (int) 2 =&gt; 'sessions' 
     ], 
     'behaviors' =&gt; [ 
      (int) 0 =&gt; 'Timestamp' 
     ], 
     'defaultConnection' =&gt; 'default', 
     'connectionName' =&gt; 'default' 

    } 

} 

업데이트 : 디버그 ($ 예약) 한 기록을 사용하여, 다음과 같다 :

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' 

} 
+0

$ 예약 기록 (예 :'debug ($ booking) ') 중 하나를 디버깅하여 여기에 결과를 게시하십시오. – arilia

+0

디버그를 시도했습니다.)하지만 그것은 내 컨트롤러에 그 변수가 없기 때문에 아마 아무것도주지 못했습니다. $ bookingsConfirmed의 디버그는 제가 OP에 추가 한 의견을주었습니다. Bookings.amount는 십진 유형을 사용하여 표시됩니다. – mistaq

+0

foreach 루프 내에 해당 변수가 있습니다. – arilia

답변

0

내가 해결책을 발견 아래 $ bookingsConfirmed의 디버그의 결과는 문제에. 내 가상 상태 클래스에서 값을 설정 한 비교 조건 ($ booking-> payment == '')보다는 값 지정 ($ booking-> payment = '')을 사용하는 If 문을 사용했습니다. 0이 아니기 때문에 원래 금액이 0이 아니더라도 0으로 표시됩니다.