Я начинающий уровень laravel. Я занимаюсь управлением складом в laravel. Я хочу связать отношения со многими-ко-многим и один-ко-многим, когда я просматриваю данные, которые меня поразили в этой строке, я не знаю, как получить подробную информацию о форме Заказ продукта правильный, мне нужно получить количество в заказе продукта. Может ли кто-нибудь помочь мне выполнить индексную функцию загрузки контроллера порядка? Таблица клиентов, таблица заказов и заказ продуктов, как просмотреть данные в формате JSON:
foreach ($order->products as $product)
{
$arrayobj['order_products'][] = [
'product_id' => $product->id,
'product_name' => $product->name,
];
}
Вот Полный код: вот код продукта и клиента, а также заказ и заказ продукта, который мне нужно, чтобы вы исправили его с помощью индекса части API заказа и функции сохранения внутри контроллера заказа:
клиент
class Client extends Model
{
use HasFactory;
protected $primary_key = "id";
protected $table = "clients";
protected $fillable = [
'name',
'email',
'phone',
'address',
];
public function orders()
{
return $this->hasMany(Order::class);
}
}
продукт
class Product extends Model
{
use HasFactory;
protected $primary_key = "id";
protected $table = "products";
protected $fillable = [
'product_code',
'product_name',
'stock_level',
'price',
'category_id',
];
public function category()
{
return $this->belongsTo(Category::class, 'category_id');
}
public function orders()
{
return $this->belongsToMany(Order::class, 'product_orders');
}
заказ
class Order extends Model
{
use HasFactory;
protected $primary_key = "id";
protected $table = "orders";
protected $fillable = [
'order_number',
'total',
'client_id',
];
public function client()
{
return $this->belongsTo(Client::class);
}
public function products()
{
return $this->belongsToMany(Product::class, 'product_orders');
}
}
Заказ продукта
class ProductOrder extends Model
{
use HasFactory;
protected $primary_key = "id";
protected $table = "product_orders";
protected $fillable = [
'product_id',
'order_id',
'qty',
];
}
вот контролер заказов
// retrieve data from clinet
public function index()
{
$orders = Order::with(['client', 'products'])->get();
// create empty array
$response_array = [];
// loop orders
foreach ($orders as $order)
{
$arrayobj = [
'order_number' => $order->order_number,
'client_id' => $order->client_id,
'total' => $order->total,
'order_products' => []
];
foreach ($order->products as $product)
{
$arrayobj['order_products'][] = [
'product_id' => $product->id,
'product_name' => $product->name,
];
}
// array_push()
}
return $response_array;
}
🤔 А знаете ли вы, что...
В PHP есть много встроенных функций для работы с строками, массивами и файлами.
Вам не нужно создавать модель исключительно для Pivot. Это обязательно.
Для модели Order
вы можете определить отношения следующим образом:
public function products()
{
return $this->belongsToMany(Product::class)->withPivot('qty');
}
и для продукта:
public function orders()
{
return $this->belongsToMany(Order::class)->withPivot('qty');
}
Затем вы можете получить доступ к Pivot, например:
foreach ($order->products as $product) {
$orderData['order_products'][] = [
/// ...
'qty' => $product->pivot->qty // Access to the Pivot
];
}
return response()->json($orderData);