Получить данные с 2 таблиц

Имеется 2 таблицы "Товары" и "Заказы" некоторые поля имеют одинаковые названия. Можно ли получить данные из 2 таблиц в 1 запросе чтобы все поля были (даже те которые одинаковые)?

Мой вариант получает все поля, но те которые одинаковые он получает со 2 таблицы (затирая первую).

$items = self::leftJoin('orders', 'items.id', '=', 'orders.item_id')->get();

Items

id
name
city_id
area_id
party
weight
data
status
created_at
updated_at

Orders

id
user_id
city_id
area_id
item_id
from
data
status
payment_system
payment_message
message
complete
delete
created_at
updated_at

Суть такова, что нужно получать все записи с таблицы Items, кроме тех, что имеют в таблице Orders тот же item_id и status = 'payment_wait' или status = 'payment_ok'

P.S. Цель - получать список товаров кроме тех, которые забронированы.


Ответы (1 шт):

Автор решения: Евгений Николаев
class Item extends  Model{

    // получаем все заказы на данный товар
    public function orders(){
        return $this->hasMany(Order::class);
    }

}

class Order extends Model {

    // получаем товар по заказу
    public function item(){
        return $this->belongsTo(Item::class);
    }

}

Таким способом устанавливается связь между таблицами в Laravel.

Получить товары с их заказам:

Item::with("orders")->get();

Чтобы указать статус товаров которые не должны войти в список:

Item::with("orders")->where("status", "!=", "Тут значение статуса")->get();

Чтобы получить все товары которые не имеют ни одного заказа в таблице "orders"

Item::doesntHave("orders")->get();
→ Ссылка