#php #mysql #laravel #eloquent
#php #mysql #laravel #красноречивый
Вопрос:
Как получить результаты на основе выбранных полей. если car_type был выбран для получения автомобиля, если audi был выбран для получения только моделей для audi. Пример пользователь выбирает car_type Автомобиль, получает Отметки, пользователь выбирает Отметки Audi, получившие A1, A2. Пользователь выбирает BMW, чтобы получить X6, X5. Я подключаю все, что нужно только для получения данных из базы данных. Посмотрите мой код.
Таблица Car_type автомобиля:
$table->increments('id');
$table->string('name');
$table->timestamps();
Таблица меток:
$table->increments('id');
$table->string('name');
$table->timestamps();
$table->integer('car_type_id');
Таблица моделей:
$table->increments('id');
$table->integer('mark_id');
$table->string('name');
$table->timestamps();
$table->integer('car_type_id');
Модель Car_type:
public function marks(){
return $this->hasMany(Mark::class);
}
Отметить модель:
public function car_type(){
return $this->belongsTo(Car_type::class);
}
public function carmodels(){
return $this->hasMany(CarModel::class);
}
Модель CarModel:
public function mark(){
return $this->belongsTo(Mark::class);
}
Теперь мне нужно получить данные в контроллере. Я пытаюсь это
$car_type = Car_type::where('id' , $id)->first();
return $car_type->marks()->get();
Получить метки с идентификатором модели car_type 1, но это плохая логика.
Комментарии:
1. но это плохая логика. Почему? Вы могли бы написать запрос, который выполняет все это за один раз, но в чем вопрос?
Ответ №1:
Вы можете просто взять метки car напрямую, чтобы выполнить один запрос вместо двух.
return Mark::where('car_type_id', $id)->get();
Комментарии:
1. Окей, но как получить модели? И нужен ли мне id в параметре моей функции? Я немного сбит с толку. Когда я тестировал в postman, я установил baseUrl / marks / 1, почему 1, я не знаю
2. Этот вопрос действительно расплывчатый. Что вы подразумеваете под «почему 1?». Ваш маршрут определяется как
/marks/{id}
где id — это идентификатор метки, для которого вы хотите получить модели. При этом вы можете использовать этот параметр ID в вашем методе контроллера в качестве аргумента.3. Окей, как я могу получить модели для выбранной метки? @metei
4. Это было бы в другой функции, такой как getModels, у которой есть идентификатор параметра ? 🙂
5. Не обязательно. Когда у вас есть
Mark
объект, вы можете получить доступ к его связям и получить модели напрямую. Как я только что писал вам раньше. Вы можете использовать другой метод, если этого требует ситуация..