问题描述
我是新来的尔康和更多的Symfony的背景来了,我只需要知道如何在尔康模型定义外键之间可选的关系。
I am new to phalcon and coming from more of Symfony background, i just need to know how define optional relationship between foreign keys in phalcon models.
即用户表的PK是USER_ID,而且用户可以有(可选)相关的记录表的照片有照片与主键photo_id和USER_ID链接。
i.e Users table PK is user_id, and Users May have(Optional) related record in Photos table to have photo with primary key photo_id and linked by 'user_id'.
因此,在我鹘模型我需要加载的用户与照片,如果有一个一。
So in my falcon models i need to load Users with the photos if there is a one.
在用户模式
public function initialize()
{
$this->hasMany(
"photo_id",
"Photo",
"photo_id",
array(
'alias' => 'photos'
)
);
}
在照片模式,我把它写成
IN photo model i write it as
public function initialize()
{
$this->belongTo(
"user_id",
"User",
"user_id",
array(
'alias' => 'user'
)
);
}
在伏来访问它通过
{{user.photo.photo_id}}
但是,这给了我错误
But this gives me error
Undefined property: Phalcon\Mvc\Model\Resultset\Simple::$photo_id
你知道吗?
奇怪的是,如果做到这一点code。在它的工作原理控制器,让我在照片模式而不是当我尝试用延迟加载访问/
Strangely if do this code in the controller it works and get me the photo models but not when i try to access it with lazy loading /
$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;
}
}
当我尝试用延迟加载这样做
When i try to do it with lazy loading like this
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;
}
}
我得到的错误
i get error
未定义的属性:尔康\的mvc \型号\结果集\简单:: $ photo_id
Undefined property: Phalcon\Mvc\Model\Resultset\Simple::$photo_id
推荐答案
问题似乎引起我有两个数据库连接如下图所示,这是造成在DI设定的一些问题。
Issue seems to be caused by i am having two database connections like below which is causing some problems in the DI set.
return new \Phalcon\Config(array(
'database' => array(
'adapter' => 'Mysql',
'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'db_main',
'name' => 'db_main',
),
需要保持只有一个数据库名称为DBNAME;
needs to keep only one database with name "dbname";
这就是我所做的修正
这篇关于尔康 - 延迟加载不是工作在模型的某些STANGE原因的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!