Возможно ли l oop через массив, в котором хранится имя отношения, как это?
$input_list1 = ['certificateQualification()','surgeryExperience()','assocOrganization()','mediaWebsite()'];
foreach ($input_list1 as $key => $value) {
// dd($user->$value); //null
// dd($user->certificateQualification);
// dd($user->certificateQualification()->isEmpty()); //false
}
dd ($ user -> $ value); возвращает ноль сейчас
$ user-> CertificateQualification ()
App\Models\UserCustomData {#4603
#connection: "mysql"
#table: "user_custom_data"
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:6 [
"id" => 229
"user_id" => 3
"type_id" => 1
"content" => "test1"
"created_at" => "2020-04-30 15:18:28"
"updated_at" => "2020-04-30 15:18:28"
]
#original: array:6 [
"id" => 229
"user_id" => 3
"type_id" => 1
"content" => "test1"
"created_at" => "2020-04-30 15:18:28"
"updated_at" => "2020-04-30 15:18:28"
]
#changes: []
#casts: []
#dates: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#hidden: []
#visible: []
#fillable: []
#guarded: array:1 [
0 => "*"
]
}
Я могу l oop через переменные базы данных, подобные этой
$profile_completion = 0;
$input_list = [];
$input_list[0] = ['veterinarian_type','area_of_skill'];
$input_list[1] = ['id','role_id','first_name','first_kana_name','nick_name','email','phone_number','gender','dob'];
$input_list[2] = ['self_description'];
$complete_list = [];
foreach ($input_list as $key => $value) {
$flag = 1;
foreach ($value as $key1 => $value1) {
if (!$user->$value1) {
$flag = 0;
}
}
if ($flag == 1) {
$complete_list[$key] = 10;
}else{
$complete_list[$key] = 0;
}
}
Я бы хотел избежать этих шагов (сейчас я использую это)
if ($user->certificateQualification()->isEmpty()) {
$complete_list[3] = 10;
}else{
$complete_list[3] = 0;
}
if ($user->surgeryExperience()->isEmpty()) {
$complete_list[4] = 10;
}else{
$complete_list[4] = 0;
}
dd($complete_list);
if ($user->assocOrganization()->isEmpty()) {
$complete_list[5] = 10;
}else{
$complete_list[5] = 0;
}
if ($user->mediaWebsite()->isEmpty()) {
$complete_list[6] = 10;
}else{
$complete_list[6] = 0;
}
Это мой пользовательская модель
public function customData()
{
return $this->hasMany('App\Models\UserCustomData', 'user_id','id');
}
public function certificateQualification()
{
return $this->customData->where('type_id',1);
}
public function surgeryExperience()
{
return $this->customData->where('type_id',2);
}
Могу ли я действительно oop из-за отношений? Пожалуйста, помогите мне решить эту проблему.