Модель Laravel Eloquent имеет много ошибок: «Подсветка \ База данных \ Eloquent \ Relations \ HasMany не может быть преобразована в строку» - PullRequest
0 голосов
/ 05 июля 2019

Я создал Eloquent Model:

class VehicleDetails extends Model
{
    //
    protected $table = 'v_vehicle_details';

    protected $primaryKey = 'model_id';

    public function tariffs()
    {
        return $this->hasMany('App\Tariffs', 'vehicle_model_id', 'model_id');
    }


}

Структура таблицы для этого v_vehicle_details равна

v_vehicle_details

Структура таблицы дляТарифы

t_tariffs

Модель вызывается в контроллере следующим образом:

public function booking_view(){

        $vehicle_details = new VehicleDetails();
        return $vehicle_details->find(5)->tariffs();
}

Мне нужно получить данные транспортного средства со всеми тарифами, Но когда я пытаюсь это выдает ошибку Illuminate \ Database \ Eloquent \ Relations \ HasMany не может быть преобразован в строку .Может кто-нибудь, пожалуйста, помогите, я новичок в laravel.

Это не фактические таблицы, но представления.

Ответы [ 3 ]

2 голосов
/ 05 июля 2019

изменить на

return VehicleDetails::with('tariffs')->find(5);
0 голосов
/ 05 июля 2019

Измените свою функцию на:

public function bookingView(){
        $vehicle = VehicleDetails::with('tariffs')->find(5);       
         return view('your.view', compact('vehicle'));
}

with() будет нетерпеливо загружать отношение тарифов.

Вы можете изменить свои тарифы в своем представлении следующим образом:

{{$vehicle->tariffs->anyAttributeYouWantToAccess}}
0 голосов
/ 05 июля 2019

Это потому, что вызов метода ->tarrifs() вернет объект отношения, в этом случае HasMany это означает, что вам все равно придется выполнить запрос для этого объекта, чтобы получить результаты.

Если вы используете его как свойство ->tarifs без (), он выполнит запрос. Это так же, как tarifs()->get() просто ярлык.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...