Arrays Kohana果冻:如何从果冻集合快速创建阵列?
假设你有一个模范人物。每个Person对象可以有许多朋友(Field\u HasMany) 如果您想为某个人的朋友获取一个简单的名称/id对数组,那么这样获取朋友是否更快/更好:Arrays Kohana果冻:如何从果冻集合快速创建阵列?,arrays,collections,kohana,jelly,Arrays,Collections,Kohana,Jelly,假设你有一个模范人物。每个Person对象可以有许多朋友(Field\u HasMany) 如果您想为某个人的朋友获取一个简单的名称/id对数组,那么这样获取朋友是否更快/更好: $friends = $person->friends; 然后使用foreach循环从该对象创建一个数组 或 进行选择,如下所示: $friends = Jelly::select('friend') ->join('people') ->on('person.id','=','friends_pe
$friends = $person->friends;
然后使用foreach循环从该对象创建一个数组
或
进行选择,如下所示:
$friends = Jelly::select('friend')
->join('people')
->on('person.id','=','friends_people.person_id')
->where('person_id','=',$person->id)
->execute()
->as_array('name', 'id');
问题是其他。。。因为一个人可以有很多朋友 因此,这种关系不是多对多,而是一对多 其他人认为,如果你真的需要多对多的关系,你需要第三张桌子来粘合。 在这种情况下,如果你有一对多的关系,“一个人有很多朋友”。 你能行
Person->friends->findAll()获取给定个人ID的所有朋友:)基本上,Jelly所做的是在您请求$Person的朋友时构建正确的查询(这与您的自定义查询类似) 要在阵列中获得好友,可以执行与自定义查询完全相同的操作:
$friends = $person->friends->as_array('id', 'name');
只是一个简短的提示:芬德尔不在果冻中,也不遵循科哈纳惯例;find_all是ORM中使用的:)谢谢,我已经更正了示例,为Person/Friends关系提供了正确的字段类型。