Php Laravel雄辩的关系keyBy()

Php Laravel雄辩的关系keyBy(),php,laravel,eloquent,laravel-5.4,Php,Laravel,Eloquent,Laravel 5.4,我想用以下方式修改关系的结果集 我有这个数组 array:11 [▼ "id" => 1 "user_id" => 1 "name" => "Test Case" "created_at" => "2017-08-25 17:12:26" "updated_at" => "2017-08-29 11:59:46" "hashid" => "5LOkAdWNDqgVomK" "user" => array:8 [▶

我想用以下方式修改关系的结果集

我有这个数组

array:11 [▼ "id" => 1 "user_id" => 1 "name" => "Test Case" "created_at" => "2017-08-25 17:12:26" "updated_at" => "2017-08-29 11:59:46" "hashid" => "5LOkAdWNDqgVomK" "user" => array:8 [▶] "order" => array:8 [▶] "classification" => array:2 [▼ 0 => array:9 [▼ "id" => 1 "case_id" => 1 "method" => "facial_map_manual" "strong" => 2.0 "dynamic" => 30.0 "delicate" => 50.0 "calm" => 18.0 "created_at" => "2017-08-31 11:00:00" "updated_at" => "2017-08-31 11:00:00" ] 1 => array:9 [▼ "id" => 2 "case_id" => 1 "method" => "interview" "strong" => 20.0 "dynamic" => 25.0 "delicate" => 30.0 "calm" => 25.0 "created_at" => "2017-08-31 11:00:00" "updated_at" => "2017-08-31 11:00:00" ] ] "classification_data" => array:3 [▼ 0 => array:6 [▼ "id" => 1 "case_id" => 1 "type" => "facial_points" "data" => null "created_at" => "2017-08-31 11:00:00" "updated_at" => "2017-08-31 11:00:00" ] 1 => array:6 [▼ "id" => 2 "case_id" => 1 "type" => "interview" "data" => array:4 [▶] "created_at" => "2017-08-31 12:00:00" "updated_at" => "2017-08-31 11:00:00" ] 2 => array:6 [▶] ] "teeth_configuration" => array:6 [▶] ] 这就是我到目前为止所尝试的

$case->classificationData =  $case->classificationData->keyBy('type')->toArray();
在第一种方法中,它们是按类型排序的,但即使尝试取消链接($case->classification\u data),旧的分类数据也会保留在那里 unlink($case->classification_data) 这不是大问题。。。我也可以通过分类来实现这一点,但数据保持不变

有什么方法可以在加载的关系模型中直接执行keyBy()操作吗?谢谢

PHP Version: 7.1 Laravel Version: 5.4.38 OS: Ubuntu 16.04 LTS PHP版本:7.1 Laravel版本:5.4.38 操作系统:Ubuntu 16.04 LTS
您可以使用以下代码替换关系:

$case->setRelation("classification_data",$case->classificationData->keyBy('type'));
若要替换关系,必须提供相同的关系名称,否则laravel将创建另一个关系名称

当您这样做时:

$case->classificationData = something
实际上,您正在向模型对象添加一个新属性。

请查看。
$case->classificationData = something