Пытаюсь найти ID у разных моделей.

В моей исходной таблице есть список задач. Однако детали задачи различаются, поэтому после добавления она будет добавлена ​​в разные модели / таблицы.

Код ниже попытается найти task_id из разных моделей. Поскольку мне нужно просмотреть детали этой задачи. Но надеялся на что-нибудь почище. Какие-либо предложения? Спасибо!

Вот мой код

public function Task(Tasks $id) {

$Model1 = Model1::where('tasks_id, $id)->pluck('id')->first();
$Model2 = Model2::where('tasks_id, $id)->pluck('id')->first();

if ($Model1 != null) {
  $this->Data = Model1:find($Model1)->get();
 }

else if ($Model2 != null) {
 $this->Data = Model2:find($Model2)->get();
 }
}
0
PendejoTrax 28 Фев 2021 в 04:47

1 ответ

Лучший ответ
public function Task(Tasks $id) {

    $models = ["Model1","Model2"];
    foreach ($models as $model){
        if($modelID = $model::where('tasks_id', $id)->pluck('id')->first()){
            $this->Data = $model::find($modelID)->get();
            break;
        }
    }
}

Вышеупомянутое может содержать ненужный запрос и может быть дополнительно упрощено:

public function Task(Tasks $id) {

    $models = ["Model1","Model2"];
    foreach ($models as $model){
        $this->Data = $model::where('tasks_id', $id)->get();
        if ($this->Data != null){
            break;
        }
    }
}

Еще одна оптимизация:

public function Task(Tasks $id) {

    $models = ["Model1","Model2"];
    foreach ($models as $model){
        if (null != $this->Data = $model::where('tasks_id', $id)->get()){
           break;
        }
    }
}
1
Joe Ward 28 Фев 2021 в 02:26