One Page 125:
public $fixtures=array( ‘projects’=>‘Project’, ‘users’=>‘User’, ‘projUsrAssign’=>’:tbl_project_user_assignment ’, );
It says using ":" to indicate that this is a database table, and not an AR model class. - I understand
On Page 129:
$issueDataProvider=new CActiveDataProvider(‘Issue’, array( ‘criteria’=>array(
‘condition’=>‘project_id=:projectId ’,
‘params’=>array(’:projectId ’=>$this->loadModel()->id), ),
There is no explanation why “:” is being used. Could someone please explain this to me? I’m very confused. The only “projectId” variable is found in the filter function of IssueController. I’m not sure if :projectId is referencing that variable.
On Page 144, there is a line:
$criteria->condition=‘project_id=:projectID ’;
I’m not sure if this is a typo of :projectId or its another reference to some other places.
The code seems to work fine but I’m very confused.
Please help. Thank you.
mdomba
(Maurizio Domba Cerin)
December 24, 2010, 7:23am
2
To understand the placeholders in a select read this - http://www.php.net/manual/en/pdostatement.bindparam.php
Basicaly :projectid is a placeholder (not a variable) that is replaced with a value that you assign to it with ‘params’
I can understand the link you gave me but still quite confused in the context of the book…
mdomba
(Maurizio Domba Cerin)
December 24, 2010, 10:02am
4
Can you explain what you don’t understand…
As per your question… .you did not understand what is :projectid … and you thouth it’s a variable…
So if you now understand the concept of binding… then you know that on this line
'condition'=>'project_id=:projectId',
:projectId is just a placeholder… it does not have any value for now… a real value will be binded here…
and this line
'params'=>array(':projectId'=>$this->loadModel()->id), ),
Say that the value of $this->loadModel()->id should be placed instead of the placeholder :projectId
Hope it’s clear now…
I see,
However, what would replace the place holder of :projectID ?
this (http://www.php.net/manual/en/pdostatement.bindparam.php ) suggests that a variable name same as the place holder will replace it’s value?!
Is that the same in this case?
Cheers.