Перевести sql запрос в Laravel с помощью Eloquent ORM или Query Builder

163
29 апреля 2019, 03:20

Есть 3 таблицы (CAT_OBL, CAT_STATION, TOS_MES), 1-я и 2-я связаны между собой по полю OBL_ID, 2-я и 3-я таблицы связанны по полю IND_ST. Нужно вывести данные из 3-й таблицы и вывести значения полей для неё из 1-й и 2-й таблицы. Есть сырой mysql-запрос , однако не могу перенести его на Eloquent ORM. Сам запрос: select c.obl_id, c.ind_st, tm.* from TOS_MES tm, CAT_STATION c, CAT_OBL o where ((c.ind_st = tm.ind_st) and ( c.obl_id=o.obl_id))

Answer 1

Переделайте запрос на джойны:

select c.obl_id, c.ind_st, tm.* from TOS_MES tm join 
CAT_STATION c on  c.ind_st = tm.ind_st   join CAT_OBL o 
o on c.obl_id=o.obl_id;

Вот пример джойнов на qb:

$users = DB::table('users')
    ->join('contacts', 'users.id', '=', 'contacts.user_id')
    ->join('orders', 'users.id', '=', 'orders.user_id')
    ->select('users.*', 'contacts.phone', 'orders.price')
    ->get();
Answer 2
class User extends Model
{
    public function contacts()
    {
        return $this->hasMany('App\Contact');
    }
    public function orders()
    {
        return $this->hasMany('App\Order');
    }
}
$users = App\User::all();
$contacts = $users->contacts();
$orders= $users->orders();
READ ALSO
Как установить эти модули через ispmanager?

Как установить эти модули через ispmanager?

Подскажите, как в панели (5 версия) установить gmpobject, strlen, sprintf, ip2long, serialize, unserialize, crypt, parse_str, json_encode, strtr, strstr, round, parse_url, simplexml_load_string, array_search ? Есть...

143
(решено) почему не передаются перменные в функцию array_map php?

(решено) почему не передаются перменные в функцию array_map php?

Есть срочки в коде (читайте комментарии в коде):

180
Как создать одноразовую ссылку? [закрыт]

Как создать одноразовую ссылку? [закрыт]

Необходимо создать ссылку для клиента, которая будет не активна после захода на неё

200