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
となっています。
よろしくお願い致します
お礼
Dagsさん、本当に有難うございました。 いやぁ、ご指摘のように、Pluginフォルダを読み込んでいませんでした。 某山○本に書かれていた設定方法を信用して丸飲みして設定したらプラグインの読み込み先が消えておりました。 おかげで他のいくつかの問題も解決しました。 数週間悩んでいたのでスッキリしました。 本当に有難うございました。