Я пытаюсь объединить 3 таблицы: клиент, клиент_элемент и элементы.
Заказчик - модель
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)
Я хочу перечислить все элементы, связанные с текущим / вошедшим в систему пользователем @MihirBhende
Было бы полезно, если бы вы могли предоставить нам структуру схемы таблицы.
@Ekown, пожалуйста, проверьте структуру сейчас






Пожалуйста, измените код модели, например:
Клиент - модель
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 теперь возвращает пустой набор
Пожалуйста, проверьте вопрос @AddWeb
Customers::with('itemRel')->with('customer')->find($id) возвращает ошибку
Попробуй это:
$customer = Customers::with('itemRel')->find($id);
$data = $customer->itemRel;
return $data;
Я надеюсь, что это будет полезно.
возврат данных сейчас, как получить подробную информацию об элементах
скажите, пожалуйста, отношения между моделями.
Я думаю, вы хотите это:........ $customer = Customers::with('itemRel')->with('itemDetails')->find($id);
Я получил детали пункта, но только один. И нужно ли мне определять itemRel, а также детали элемента в самой модели клиента?
Да, вам нужно определить itemRel, itemDetails в модели Customer. Вы можете следить за официальной документацией отношение
Используйте его без скобок
$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;
Какие данные вы хотите получить в результате данных? Вы хотите получить все продукты, связанные с конкретным клиентом (покупателем)?