Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Kohana果冻:如何从果冻集合快速创建阵列?_Arrays_Collections_Kohana_Jelly - Fatal编程技术网

Arrays Kohana果冻:如何从果冻集合快速创建阵列?

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

假设你有一个模范人物。每个Person对象可以有许多朋友(Field\u HasMany)

如果您想为某个人的朋友获取一个简单的名称/id对数组,那么这样获取朋友是否更快/更好:

$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关系提供了正确的字段类型。