cakePHPのエラー
Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'validateSearch' at line 1
SQL Query: validateSearch
Notice: If you want to customize this error message, create app/View/Errors/pdo_error.ctp
というエラーが出て困っています。
validateSearchの付近を確認してもよくわかりません。
searchpluginを使っているのですが、上手くいきません。
コントローラーは、
<?php
App::uses('AppController', 'Controller');
class Mac554FoodDatasController extends AppController {
public $name='Mac554FoodDatas';
public $components =array('Search.Prg');
public $presetVars=array();
public function beforeFilter()
{
//検索対象のフィールド設定代入
$this->presetVars = $this->Mac554FoodData->presetVars;
// ページャ設定
$pager_numbers = array(
'before' => ' - ',
'after'=>' - ',
'modulus'=> 10,
'separator'=> ' ',
'class'=>'pagenumbers'
);
$this->set('pager_numbers', $pager_numbers);
}
public function find()
{
$datas=$this->Mac554FoodData->find('all');
$this->set('datas',$datas);
//検索条件設定
$this->Prg->commonProcess();
//検索条件取得
$tabe=$this->passedArgs;
$conditions = $this->Mac554FoodData->parseCriteria['$tabe'];
//ページャ関係
$this->paginate =array(
'conditions' => $conditions,
'limit' =>10
);
$this->set('Mac554FoodDatas',$this->paginate('Mac554FoodData'));
// レイアウト関係
$this->layout = "plain";
$this->set("header_for_layout", "Sample Application");
$this->set("footer_for_layout",
"copyright by SYODA-Tuyano. 2011.");
// post時の処理
//$this->set('Mac554FoodDatas',$this->Mac554FoodData->find('all'));
}
public function index()
{
$this->layout = "plain";
$this->set("header_for_layout", "Sample Application");
$this->set("footer_for_layout",
"copyright by SYODA-Tuyano. 2011.");
//レイアウト
}
}
?>
で、検索フォームはエレメントで
<?php echo $this->Form->create('Mac554FoodData', array('url' => '/Mac554FoodDatas/find'))?>
<fieldset>
<legend>Search or Die!</legend>
<dl>
<dt><label>ユーザname</label></dt>
<dd><?php echo $this->Form->input('name', array(
'type' => 'text', 'div' => false, 'label' => false))?></dd>
<dt><label>time</label></dt>
<dd><?php echo $this->Form->input('time', array(
'type' => 'text', 'div' => false, 'label' => false ))?></dd>
<dt><label>naiyoudao</label></dt>
<dd><?php echo $this->Form->input('naiyoudao', array(
'type' => 'text', 'div' => false, 'label' => false ))?></dd>
</dl>
<?php echo $this->Form->submit('検索',array('div'=>false,'escape'=>false))?>
</fieldset>
<?php echo $this->Form->end()?>
のように作りました。
モデルは、
<?php
class Mac554FoodDatas extends AppModel{
public $name=Mac554FoodData
public $actsAs = array('Search.Searchable');
// 検索対象のフィルタ設定
public $filterArgs = array(
array('name' => 'name', 'type' => 'value', 'field' => 'Mac554FoodData.name'),
array('name' => 'time', 'type' => 'like', 'field' => 'Mac554FoodData.time'),
array('name' => 'naiyoudao', 'type' => 'like', 'field' => 'Mac554FoodData.naiyoudao'),
);
//検索対象のフィールド設定
public $presetVars = array(
array('field' => 'name', 'type' => 'value'),
array('field' => 'time', 'type' => 'value'),
array('field' => 'naiyoudao', 'type' => 'value'),
);
}
という感じで作りました。
投げているSQL文を見ると、
SELECT `Mac554FoodData`.`id`, `Mac554FoodData`.`time`, `Mac554FoodData`.`name`, `Mac554FoodData`.`naiyoudao`, `Mac554FoodData`.`twinoid` FROM `mac554_foodlog`.`mac554_food_datas` AS `Mac554FoodData` WHERE 1 = 1
となっています。
よろしくお願い致します
お礼
ありがとうございました。 お礼が遅くなり、申し訳ありません。 echo h( $data[行番号]['belongsTo先モデル名']['さらにbelongsTo先モデル名']['カラム名'] ); の、['belongsTo先モデル名']の記述が抜けておりました。 大変助かりました。 ありがとうございます。