2013-04-16 2 views
1

Я полный новичок в мире yii и изо всех сил изучаю фреймворк, насколько это возможно, при чтении книги по Yii - 'Разработка веб-приложений с использованием Yii и PHP 'по Джеффри Winesett,Условие Yii params (PHP Framework)

я наткнулся:

'params'=>array(':projectId'=>$this->_project->id) 

Если кто-нибудь читал книгу, кто-то может объяснить, почему мы используем : ProjectID почему не непосредственно ProjectID? Что означает «:»? Является ли это конкретным синтаксисом или это что-то специфическое для PHP.

Это был точный код:

public function actionIndex() 
    { 

     $dataProvider=new CActiveDataProvider('Issue', array(
      'criteria'=>array(
       'condition'=>'project_id=:projectId', 
       'params'=>array(':projectId'=>$this->_project->id), 
      ), 
     )); 
     $this->render('index',array(
      'dataProvider'=>$dataProvider, 
     )); 
    } 

Любой ответ будет высоко оценен. С уважением.

+0

ли (это 'params' массив) используется в запросе SQL для связывания параметров? – nickb

+0

Это был точный код публичную функцию actionIndex() \t { \t \t // $ DataProvider = новый CActiveDataProvider ('выпуск'); \t \t $ DataProvider = новый CActiveDataProvider ('выпуск', массив ( \t \t \t 'Критерии' => массив ( \t \t \t \t 'условие' => 'project_id =: ProjectID', \t \t \t \t «PARAMS '=> array (': projectId '=> $ this -> _ project-> id), \t \t \t), \t \t)); \t \t $ этом-> визуализации ('индекс', массив ( \t \t \t 'DataProvider' => $ DataProvider, \t \t)); \t} –

ответ

4

Идентификатор «:» для идентификации параметра в строке условия. Это способ безопасного привязки params к оператору sql.

В вашем случае, если вы укажете это условие

project_id=:projectId 

В вашей БД схеме, Yii знаю, что project_id представляет собой целое число, то при связывании Пар с:

'params'=>array(':projectId'=>$this->_project->id), 

Yii будет убедитесь, что вы привязываете целое число и записываете инструкцию SQL для него и генерируете оператор SQL следующим образом: project_id=26

Это то же самое для строки, например:

 'criteria'=>array(
      'condition'=>'name=:myname', 
      'params'=>array(':myname' => 'Ronald McDonald'), 
     ), 

тогда ваше заявление SQL для этого условия будет name='Ronald McDonald'

+0

Является ли привязка с использованием ':' специфичной только для Yii или она специфична для PHP или используется в других рамках? –

+0

Это специфично для фреймворка, я видел его и в других средах, но это не относится к PHP –

Смежные вопросы