2017-08-31 18 views
0

私はコラムで分類classification_dataをマップしたい私はこの配列Laravel雄弁関係keyBy()

 

    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 [▶] 
    ] 

を持って次のよう

に関係の結果セットを変更したいですキー(型ORメソッド)がロードされます。 これはクエリです:

$case = RCase::with(['user','order','classification','classificationData','teethConfiguration'])->where('id',$id) 
        ->first(); 

これは、彼らはタイプによって順序付けされた第1の方法では、私がこれまで試したどの

$case->classificationData = $case->classificationData->keyBy('type')->toArray(); 

ですが、そこに古いclassification_data滞在

 unlink($case->classification_data)
にしようとした場合でもこれは大きな問題ではありません... 分類でもこれを行うことができますが、データは同じままです。

ロードされたリレーションモデルでkeyBy()を直接実行できる方法はありますか?あなたが同じリレーション名またはlaravelは別のものを作成します提供しなければならない関係を交換するに

$case->setRelation("classification_data",$case->classificationData->keyBy('type')); 

:事前におかげ

 
PHP Version: 7.1 
Laravel Version: 5.4.38 
OS: Ubuntu 16.04 LTS 

答えて

0

あなたはこのコードとの関係を置き換えることができます。

あなたは:あなたが実際にモデルオブジェクトに新しい属性を追加している

$case->classificationData = something