Pet*_*nev 5 php laravel eloquent laravel-5.4
我想通过以下方式修改关系的结果集
我有这个数组
数组:11 [?
“id” => 1
“用户 ID” => 1
“名称”=>“测试用例”
"created_at" => "2017-08-25 17:12:26"
"updated_at" => "2017-08-29 11:59:46"
"hashid" => "5LOkAdWNDqgVomK"
“用户”=> 数组:8 [?]
“订单” => 数组:8 [?]
“分类” => 数组:2 [?
0 => 数组:9 [?
“id” => 1
“case_id” => 1
“方法” => “facial_map_manual”
“强”=> 2.0
“动态”=> 30.0
“精致”=> 50.0
“冷静”=> 18.0
"created_at" => "2017-08-31 11:00:00"
"updated_at" => "2017-08-31 11:00:00"
]
1 => 数组:9 [?
“id” => 2
“case_id” => 1
“方法”=>“面试”
“强”=> 20.0
“动态”=> 25.0
“精致”=> 30.0
“冷静”=> 25.0
"created_at" => "2017-08-31 11:00:00"
"updated_at" => "2017-08-31 11:00:00"
]
]
“分类数据”=> 数组:3 [?
0 => 数组:6 [?
“id” => 1
“case_id” => 1
“类型”=>“面部积分”
“数据” => 空
"created_at" => "2017-08-31 11:00:00"
"updated_at" => "2017-08-31 11:00:00"
]
1 => 数组:6 [?
“id” => 2
“case_id” => 1
“类型”=>“采访”
“数据”=> 数组:4 [?]
"created_at" => "2017-08-31 12:00:00"
"updated_at" => "2017-08-31 11:00:00"
]
2 => 数组:6 [?]
]
“teeth_configuration” => 数组:6 [?]
]
我想通过加载关系的列键(类型 OR 方法)映射分类和分类数据。这是查询:
$case = RCase::with(['user','order','classification','classificationData','teethConfiguration'])->where('id',$id)
->first();
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止尝试过的
$case->classificationData = $case->classificationData->keyBy('type')->toArray();
Run Code Online (Sandbox Code Playgroud)
使用第一种方法,它们按类型排序,但旧的分类数据仍然存在,即使尝试
取消链接($case->classification_data)这不是大问题......我也可以通过分类来做到这一点,但数据保持不变。
有什么方法可以在加载的关系模型中直接执行 keyBy() 吗?提前致谢
PHP 版本:7.1 Laravel 版本:5.4.38 操作系统:Ubuntu 16.04 LTS
您可以用以下代码替换关系:
$case->setRelation("classification_data",$case->classificationData->keyBy('type'));
Run Code Online (Sandbox Code Playgroud)
要替换关系,您必须提供相同的关系名称,否则 laravel 将创建另一个关系名称。
当你这样做时:
$case->classificationData = something
Run Code Online (Sandbox Code Playgroud)
您实际上是在向模型对象添加一个新属性。
| 归档时间: |
|
| 查看次数: |
8069 次 |
| 最近记录: |