

週間スケジュールを作成する際に、週が変わるたびにその週の情報を取得したいので  
render_sql関数を使って、条件指定を行おうと思いましたが、論理削除フラグ(del_flg)の条件さえも適用されません。

：環境

  * CakePHP 1.2
  * MySQL 5.5.16
  * PHP 5.3.8
  * dhtmlx 3.0

：ソースコード

[code]

        $connector = new SchedulerConnector($this->TEventSchedule, "PHPCake");
        $connector->render_sql("SELECT id, start_date,end_date,event_name FROM t_event_schedules WHERE del_flg = 0","id","start_date,end_date,event_name");
    
[/code]

何かご存知の方がいらっしゃいましたらご教授願います。


CC BY-SA 3.0
2015-08-19T08:20:59.250
14621
2016-05-18T01:10:39.810
2015-08-20T04:16:20.210
9336
9336
question
php
dhtmlx schedulerでWHERE句が効かない


ソースをざっと追ったところ、WHERE句をセットするコードが見当たらなかったので、  
DBDataWrapperクラスのselectメソッド(db_common.php)を参考に、  
PHPCakeDBDataWrapperクラスのselectメソッド(db_phpcake.php)を下記のように書き換えました。（オーバーライドする形や、別ファイルにする形にしようか考え中です）

[code]

    class PHPCakeDBDataWrapper extends ArrayDBDataWrapper{
        public function select($source){
            $select=$source->get_fieldset();
            if (!$select){
                $select=$this->config->db_names_list($this);
                $select = implode(",",$select);
            }
    
            $where=$this->build_where($source->get_filters(),$source->get_relation());
            $sort=$this->build_order($source->get_sort_by());
    
            $res = $this->connection->query($this->select_query($select,$source->get_source(),$where,$sort,$source->get_start(),$source->get_count()));
            if (sizeof($res)){
                $nameCamer = get_class($this->connection);
                $name = Inflector::underscore($nameCamer) . "s";
                $temp = array();
                for ($i=sizeof($res)-1; $i>=0; $i--)
                    $temp[]=&$res[$i][$name];
            }
            return new ArrayQueryWrapper($temp);
        }
    
[/code]

ひとまず、この方法で進めてみます。


CC BY-SA 3.0
2015-08-20T03:03:02.993
14649
2015-08-20T03:03:02.993
9336
14621
answer