Красноречивое соединение возвращает пустой набор данных

Я пытаюсь объединить 3 таблицы: клиент, клиент_элемент и элементы.

  • клиент - данные клиента
  • предметы - детали предмета
  • customer_item - связь между клиентом и товарами

Заказчик - модель

public function itemRel(){
    return $this->hasMany(CustomerItem::class,'customer_id');
}

CustomerItem - модель

public function itemDetails(){  
    return $this->hasOne(Items::class, 'id');
}

КлиентКонтроллер

$customer = Customers::find($id);
$data = $customer->itemRel();
return $data;

Структура схемы

customer - [id,name,mobile,username...]
items - [id, item_name, quantity, nature ....]
customer_item - [id, customer_id,item_id...]

Я хочу перечислить все элементы, относящиеся к пользователю (customer_item)

Какие данные вы хотите получить в результате данных? Вы хотите получить все продукты, связанные с конкретным клиентом (покупателем)?

Mihir Bhende 12.02.2019 08:31

Я хочу перечислить все элементы, связанные с текущим / вошедшим в систему пользователем @MihirBhende

OutForCode 12.02.2019 08:34

Было бы полезно, если бы вы могли предоставить нам структуру схемы таблицы.

Ekown 12.02.2019 08:42

@Ekown, пожалуйста, проверьте структуру сейчас

OutForCode 12.02.2019 08:50
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
4
146
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Пожалуйста, измените код модели, например:

Клиент - модель

public function itemRel(){
    return $this->belongsTo(CustomerItem::class,'customer_id');
}

КлиентЭлемент - модель

public function customer(){  
    return $this->hasMany(Customer::class);
}

Обновленный ответ

Клиент - модель

public function itemRel(){
    return $this->hasMany(CustomerItem::class);
}

КлиентЭлемент - модель

public function customer(){  
    return $this->belongsTo(Customer::class, 'customer_id');
}

Пропущенный belongsTo теперь возвращает пустой набор

OutForCode 12.02.2019 08:46

Пожалуйста, проверьте вопрос @AddWeb

OutForCode 12.02.2019 08:51

Customers::with('itemRel')->with('customer')->find($id) возвращает ошибку

OutForCode 12.02.2019 10:52

Попробуй это:

$customer = Customers::with('itemRel')->find($id);
$data = $customer->itemRel;
return $data;

Я надеюсь, что это будет полезно.

возврат данных сейчас, как получить подробную информацию об элементах

OutForCode 12.02.2019 08:42

скажите, пожалуйста, отношения между моделями.

Inzamam Idrees 12.02.2019 08:56

Я думаю, вы хотите это:........ $customer = Customers::with('itemRel')->with('itemDetails')->find($id);

Inzamam Idrees 12.02.2019 08:58

Я получил детали пункта, но только один. И нужно ли мне определять itemRel, а также детали элемента в самой модели клиента?

OutForCode 12.02.2019 10:53

Да, вам нужно определить itemRel, itemDetails в модели Customer. Вы можете следить за официальной документацией отношение

Inzamam Idrees 12.02.2019 11:07

Используйте его без скобок

$data = $customer->itemRel;

чтобы получить фактическое использование данных модели

$data->propertyName
Ответ принят как подходящий

Вместо этого попробуйте использовать отношение belongsToMany.

Заказчик - модель

public function items(){
    return $this->belongsToMany(Items::class,'customer_item','customer_id','item_id');
}

Предметы - модель

public function customers(){    
    return $this->belongsToMany(Customer::class,'customer_item','item_id','customer_id');
}

КлиентКонтроллер

$customer = Customers::find($id);
$data = $customer->items();
return $data;

Другие вопросы по теме