gpt4 book ai didi

php - 如何在单个查询 Zend Framework 中从相关表返回行

转载 作者:行者123 更新时间:2023-11-30 23:10:20 25 4
gpt4 key购买 nike

我有两个表,Restaurants 和 RestaurantHours,我需要在单个结果集中返回它们。对于 Restaurants 表中的每家餐厅,RestaurantHours 表中有 7 条记录。

我正在尝试以下列格式返回数据,以在我的 Knockout ViewModel 中使用。

结果的期望格式(注意省略了一些字段)

array(
'name' => 'restaurant name here',
'description' => 'restaurant description here',
'hours' => array(
'1' => array('open' => 1, 'day' => 1, 'open_time' => '8:00', 'close_time' => 10:00),
'2' => array('open' => 1, 'day' => 2, 'open_time' => '8:00', 'close_time' => 10:00),
'3' => array('open' => 1, 'day' => 3, 'open_time' => '8:00', 'close_time' => 10:00),
'4' => array('open' => 1, 'day' => 4, 'open_time' => '8:00', 'close_time' => 10:00),
'5' => array('open' => 1, 'day' => 5, 'open_time' => '8:00', 'close_time' => 10:00),
'6' => array('open' => 1, 'day' => 6, 'open_time' => '8:00', 'close_time' => 10:00),
'7' => array('open' => 1, 'day' => 7, 'open_time' => '8:00', 'close_time' => 10:00),
)
);

到目前为止,我已经能够使用下面的选择获取所有餐厅,但我不确定如何以我想要的格式返回餐厅营业时间,所以在客户端,我会有一个集合一周中每一天的餐厅对象,每个对象都有自己的餐厅营业时间集合。我知道如何连接表,只是不确定如何使用 Zend DB 获得我想要的结果集。

餐厅

  $select = $this->restaurantRepository->select();
$select->setIntegrityCheck(false)
->from('restaurants')
->join('food_types', 'restaurants.food_type = food_types.id', array('foodType' => 'name'))
->order('restaurants.name ASC');
$restaurants = $this->restaurantRepository->getAdapter()->fetchAll($select);

return Zend_Json::encode($restaurants);

餐厅营业时间

// fetch all of the restaurant hours for the specified restaurant
$select = $this->restaurantHoursRepository
->select()
->from('restaurant_hours', array('id', 'restaurant_id', 'open', 'day', 'open_time' => 'DATE_FORMAT(open_time, "%H:%i")', 'close_time' => 'DATE_FORMAT(close_time, "%H:%i")'))
->where('restaurant_id = ' . $restaurant_id);

return Zend_Json::encode($this->restaurantHoursRepository->fetchAll($select));

基本上我需要将这两个查询连接在一起。现在我必须返回所有餐厅,然后当一个餐厅对象绑定(bind)到 ViewModel 时,我获取餐厅营业时间,这意味着很多 ajax 调用。我真的很想把它恢复到只有一个电话,它加载了所有餐厅。

感谢大家的帮助!

最佳答案

你能试试吗

$select = $this->restaurantRepository->select();
$select->setIntegrityCheck(false)
->from('restaurants')
->join('food_types', 'restaurants.food_type = food_types.id', array('foodType' => 'name'))
->join('restaurant_hours', 'restaurants.id = restaurant_hours.restaurant_id', array('id', 'restaurant_id', 'open', 'day', 'open_time' => 'DATE_FORMAT(open_time, "%H:%i")', 'close_time' => 'DATE_FORMAT(close_time, "%H:%i")'))
->order('restaurants.name ASC');
$restaurantsAndHours = $this->restaurantRepository->getAdapter()->fetchAll($select);

return Zend_Json::encode($restaurantsAndHours);

关于php - 如何在单个查询 Zend Framework 中从相关表返回行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20061341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com