【问题标题】:cakephp Virtual Field in SQL querySQL查询中的cakephp虚拟字段
【发布时间】:2015-11-21 06:32:15
【问题描述】:

我正在尝试在 cakephp 1.3 中使用 cakephp virtualFields。我的 sql 查询如下,但我需要 day_index(我的虚拟字段)为 'DAYOFWEEK(start_date)'。

我需要重写一个查询

$data = $this->Calendar->query("SELECT *, DAYOFWEEK(start_date) as day_index, TIME(start_time) as time 
    FROM calendars WHERE calendar_category_id =$cal ORDER BY day_index, time");

转换成这种格式:

$sqlConditions = array("Calendar.calendar_category_id"=>$cal);
$sqlOrderBy = array("Calendar.day_index", "Calendar.time asc");
$sqlParams = array('conditions'=>$sqlConditions,'order'=>$sqlOrderBy);
$data = $this->Calendar->find('all',$sqlParams);
$this->set('data',$data);

所以我不确定如何/在哪里放置或声明虚拟字段。

$fields = $this->Calendar->virtualFields['day_index'].'AS 'DAYOFWEEK(start_date)';

【问题讨论】:

    标签: php mysql cakephp


    【解决方案1】:

    找到了 2 种方法来做到这一点,不确定一种是否比另一种更好。 控制器仅编辑方法

    $sqlFields = array("DAYOFWEEK(Calendar.start_date) as day_index",
        "TIME(Calendar.start_time) as time",
        "Calendar.start_date",
        "Calendar.calendar_category_id",
        "Calendar.start_time");
        $sqlConditions = array("Calendar.calendar_category_id"=>$cal);
        $sqlOrderBy = array("Calendar.day_index, Calendar.time asc"); 
        $sqlParams = array('fields'=>$sqlFields,'conditions'=>$sqlConditions,'order'=>$sqlOrderBy);
        $data = $this->Calendar->find('all',$sqlParams);
        return $data;
        exit();
    

    基于此方法编辑控制器的模型方法 型号>

    var $virtualFields = array(  
       'day_index' => "DAYOFWEEK(Calendar.start_date)",
       'time' => "TIME(Calendar.start_time)"
     );  
     var $displayIndex = 'day_index'; 
     var $displayTime = 'time';
    

    控制器>

    $sqlConditions = array("Calendar.calendar_category_id"=>$cal);
        $sqlOrderBy = array("Calendar.day_index, Calendar.time asc"); 
        $sqlParams = array('conditions'=>$sqlConditions,'order'=>$sqlOrderBy);
        $data = $this->Calendar->find('all',$sqlParams);
        return $data;
        exit();
    

    【讨论】:

      猜你喜欢
      • 2020-05-18
      • 2020-05-27
      • 1970-01-01
      • 2022-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多