Как преобразовать построитель запросов к базе данных в модели Eloquent

Мне нужно преобразовать построитель запросов к базе данных в модель Eloquent. Я использую плагин https://github.com/Kyslik/column-sortable и это требует красноречивой модели.

<?php

$payments = DB::table('users')
    ->select('orders.id', 'users.id', 'users.name', 'orders.amount', 'orders.created_at', 'orders.updated_at')
    ->join('patients', 'users.id', '=', 'patients.user_id')
    ->join('orders', 'patients.id', '=', 'orders.patient_id')
    ->where('users.name', 'LIKE', '%' . $q . '%')
    ->orWhere('users.email', 'LIKE', '%' . $q . '%')
    ->get();

person Mohammad Nurdin    schedule 15.01.2019    source источник
comment
определить модели и их отношения, и тогда это станет проще: User::with(['patients','orders'])->where('users.name','LIKE','%'.$q.'%') ->orWhere('users.email','LIKE','%'.$q.'%') ->get();, если вам нужна дополнительная помощь, опубликуйте свои модели с их отношениями   -  person Ahmed Nour Jamal El-Din    schedule 15.01.2019


Ответы (2)


вызовите свою модель внутри метода контроллера.

$companyObj = new modelname();
$userDetail = $companyObj->model_method_name($request);
person PHP Geek    schedule 15.01.2019

попробуйте объявить красноречивые отношения в соответствующей модели, как показано ниже:

    class Users extends Model {
     public function patients(){
          return this->hasOne('App\Patients', 'user_id', 'id')->with('orders');
     }
    }

   class Patients extends Model {
       public function orders() {
           return this->hasMany('App\Orders', 'patient_id', 'id')->select('id', 'amount', 'created_at', 'updated_at');
       }
   }

теперь вызовите эти отношения в красноречивом запросе в хранилище / контроллере пользователей:

$payments = $this->getModel()->select('id', 'name')->with('patients')->where('name','LIKE','%'.$q.'%')->orWhere('email','LIKE','%'.$q.'%')->get();
person piyush    schedule 15.01.2019