我是 phalcon 的新手,并且来自更多 Symfony 背景,我只需要知道如何在 phalcon 模型中定义外键之间的可选关系。
即用户表PK 是user_id,并且用户可能在照片表中有(可选)相关记录以具有主键photo_id 并由'user_id' 链接的照片。
所以在我的猎鹰模型中,如果有照片,我需要为用户加载照片。
在用户模型中
public function initialize()
{
$this->hasMany(
"photo_id",
"Photo",
"photo_id",
array(
'alias' => 'photos'
)
);
}
在照片模型中,我将其写为
public function initialize()
{
$this->belongTo(
"user_id",
"User",
"user_id",
array(
'alias' => 'user'
)
);
}
在伏访问它通过
{{user.photo.photo_id}}
但这给了我错误
Undefined property: Phalcon\Mvc\Model\Resultset\Simple::$photo_id
任何的想法 ?
奇怪的是,如果在控制器中执行此代码它可以工作并让我获得照片模型,但当我尝试通过延迟加载访问它时却不行/
$users = User::find(array(
"limit" => 10)
);
echo "There are ", count($users), "\n";
foreach($users as $user){
$photos = Photo::find(array(
"user_id=:user_id:",
"limit" => 10,
"bind" => array("user_id" => $user->user_id)
)
);
if($photos->count()==0){
echo "<br />";
echo "No photo found for user".$user->user_id;
}
foreach($photos as $photo){
echo '<br />';
echo "User ->".$photo->user_id." Photo -> ".$photo->photo_id;
}
}
当我尝试像这样使用延迟加载时
foreach($users as $user){
//echo $user->photos->photo_id;
foreach($user->photos as $photo){
echo '<br />';
echo "User ->".$photo->user_id." Photo -> ".$photo->photo_id;
}
}
我得到错误:
未定义的属性:Phalcon\Mvc\Model\Resultset\Simple::$photo_id