2017-02-20 13 views
0

我有一個名爲Bookings表,具有以下屬性:CakePHP的3 - 取景器不加載正確的數據

  • id
  • artist_id - 外鍵
  • status
  • amount
  • created
  • modified

它與表ArtistsPaymentsSessions相關聯。

在視圖中,我已經使用了jQuery插件數據表顯示Bookings符合以下條件:

  • 他們status等於「證實」
  • 關聯表Session's屬性date_end必須大於當前日期。

但是,第二個條件似乎不起作用,因爲它在滿足該條件的數據條目存在時不會返回任何內容。

在我的控制器,此特定表中的相應發現:

$bookingsConfirmed = $this->Bookings->find('all',[ 
      'contain' => ['Sessions', 'Sessions.Studios', 'Sessions.Engineers', 'Artists'], 
      'conditions'=>['status' => 'confirmed', 'Sessions.date_end >=' => DATE(Time::now())], 
      'order'=>['Bookings.created'=>'ASC'] 
     ]); 

我已經嘗試了以下更改條件,所有這些都沒有表現出顯着的差異:

  • date_end >=' => DATE(Time::now())
  • 'Sessions.date_end >=' => Time::now()
  • 'date(Sessions.date_end) >=' => DATE(Time::now())
  • 'date(Sessions.date_end) >=' => date(DATE(Time::now()))

如果我周圍>等號(=)切換到<,我所有的預訂數據顯示,儘管不是所有的人都滿足這一條件。

在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 = 'confirmed' 
    AND Sessions.date_end >= '20/2/17, 4:47 p02' 
) 
ORDER BY 
    Bookings.created ASC 

正如今天的日期,應該有3項,顯示。我做的Time::now打印,並得到了日期:

Cake\I18n\Time Object 
(
    [time] => 2017-02-20T16:47:11+11:00 
    [timezone] => 
    [fixedNowTime] => 
) 

奇怪的是,這是上週做工精細,並提交形式仍然工作。例如,在MySQL中,我今天輸入的最新條目顯示Sessions.date_end填充YYYY-MM-DD格式,就像所有進行它的條目一樣。

+0

第二個變量應該工作得很好,因爲你的'date_end'列設置爲一個適當的日期/時間類型。 – ndm

回答

0

試試這個行,而不是

`date_end >=' => date('Y-m-d H:i:s', Time::now()->getTimestamp())` 

注:使用確切的詞案例職能,而不是dateDATE

+0

這個技巧。我之前嘗試過類似的東西(使用'Y-m-d'),但'date_end'最終給我語法錯誤,因爲它也使用了引號。 – mistaq