Doctrine 1.2必须至少有一个字段选择Error.but实际上选择了一个

时间:2010-10-10 18:14:50

标签: php doctrine

关于这个例外,过去一小时我一直在撞墙!

  

查询的根类(别名b)必须至少选择一个字段

在这里的小型学校酒店预订项目中是相关模式的一部分

RoomType:
  actAs: [Timestampable]
  tableName: room_type
  columns:
    name: string(100)
    number_of_bed: integer

Room:
  tableName: room
  columns:
    id:
      type: string(36)
      primary: true
    room_number: integer
    price: decimal
  relations:
    RoomType:
      class: RoomType
      local: type_id
      foreign: id

RoomBooking:
  tableName: roombooking
  actAs: [Timestampable]
  columns:
    id:
      type: string(36)
      primary: true
      room_id: string(36)
      checkin_date: date
      checkout_date: date
      is_cancelled: boolean
  relations:
    Room:
      class: Room
      local: room_id
      foreign: id
为了简单和短信,我绊倒了某个领域。所以基本上我想查询总数,某个月每天预订的房间类型。我想简单的事情,所以现在我假设预订是只是24小时所以现在我只是看看登记日期。这是查询

$q = Doctrine_Query::create ()
->select("SUM(COUNT(b.id)), b.checkin_date as DATE, t.name")
->from ("Hotel_Model_RoomBooking b" )
->leftJoin("b.Room r")
->leftJoin("r.RoomType t")
->where ("b.checkin_date > ? AND b.checkin_date < ?", array ($first, $last))
->groupBy("b.checkin_date, t.name");

$result = $q->fetchArray ();    

b.checkin_date是根类中的一个字段,所以我选择了这个b.id,到目前为止我无法弄清楚。你怎么想?我在这做错了什么?感谢您的阅读并提前感谢您的帮助

3 个答案:

答案 0 :(得分:1)

我是Doctrine的新手,我遇到了同样的问题。删除别名使其工作。

答案 1 :(得分:0)

因为根元素中的所有字段都有别名 - 这是一个错误(它在Doctrine的Jira中报道但我无法找到它)。

->select("SUM(COUNT(b.id)), b.checkin_date as DATE, t.name")

正如您可以看到,b.id和b.checkin_date都有别名: b.id将是sum,checkin_date是DATE :) 您问题最简单的方法是:

->select("SUM(COUNT(b.id)), b.checkin_date as DATE, b.checkin_date, t.name")

答案 2 :(得分:0)

你需要在你的数据库上拥有所有的primary_key这是你的选择。 例如:

$dps_is_store_closed = get_user_meta($user_id, '_dps_is_store_closed', true);
$daysweek2 = array(
'0' => 'Monday',
'1' => 'Tuesday',
'2' => 'Wednesday',
'3' => 'Thursday',
'4' => 'Friday',
'5' => 'Saturday',
'6' => 'Sunday',
);
<table border="0">
  <tr>
     <th>Closed for the Day</th>
  </tr>
 <tr>
   foreach($daysweek2 as $key => $value){
    <td>
      <input type="checkbox" id="dps_is_store_closed[<?php $key?>]" name="dps_is_store_closed[<?php $key?>]" <?php checked( $dps_is_store_closed[$key], 'on' ); ?> value="">    
    </td>
   }
</tr>