Я вроде как новичок в Laravel и надеюсь, что кто-нибудь сможет мне помочь.
Я прошу прощения за мой английский
Так что я пытаюсь разработатьприложение с некоторыми друзьями, чтобы управлять нашей едой, отправив уведомление, когда приближается дата отмены.
Я разрабатываю API, фактическая структура выглядит следующим образом:
Пользователь,
Продукт,
Корзина, содержащая идентификатор пользователя,product_id и, конечно, дата отмены.
Так что теперь, когда я звоню, чтобы получить пользовательский «запас» на моем API, я хотел бы получить что-то вроде этого:
{
'id' : 1,
'peremption_date': XX-XX-XX,
'product' : {
'id' : 3,
'name': bblablabala,
'brand' : blablabala
},
'id' : 2,
'peremption_date': XX-XX-XX,
'product' : {
'id' : 4,
'name': bblablabala,
'brand' : blablabala
},
}
Поэтому я взглянул на ресурсы и увидел, что, если я определю правильные отношения, это может помочь моему выводу.
Я свяжу с вами мои фактические объявления классов и их ресурсы:
Пользователь:
//user.php
class User extends Authenticatable
{
use Notifiable, HasApiTokens;
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
public function baskets()
{
return $this->hasMany(Basket::class);
}
}
Продукт:
//Product.php
class Product extends Model
{
protected $table = 'products';
protected $fillable = ['code_barre', 'product_name', 'generic_name', 'brand', 'quantity'];
public function basket()
{
return $this->belongsToMany(Basket::class);
}
}
//productResource.php
class ProductResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'code_barre' => $this->code_barre,
'product_name' => $this->product_name,
'generic_name' => $this->generic_name,
'brand' => $this->brand,
'quantity' => $this->quantity,
'created_at' => (string) $this->created_at,
'updated_at' => (string) $this->updated_at,
];
}
}
Корзина:
//Basket.php
class Basket extends Model
{
protected $table = 'baskets';
protected $fillable = ['user_id', 'product_id', 'dlc_date'];
public function user()
{
return $this->belongsTo(User::class);
}
public function product()
{
return $this->hasOne(Product::class);
}
}
//BasketResource.php
class BasketResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'dlc_date' => (string) $this->dlc_date,
'created_at' => (string) $this->created_at,
'updated_at' => (string) $this->updated_at,
'product' => $this->product
];
}
}
Поэтому, когда я пытаюсь сохранить новую корзину в моем магазине, метод:
//BasketController.php
public function store(Request $request)
{
$this->product->storeProduct($request->input('code_barre'));
$att = DB::table('products')
->where('code_barre', '=', $request->input('code_barre'))
->first();
$basket = Basket::create([
'user_id' => $request->user()->id,
'product_id' => $att->id,
'dlc_date' => $request->input('dlc_date')
]);
return new BasketResource($basket);
}
Я получаю следующую ошибку (эта)
о том, что products.id_basket не существует и его право не должно существовать.Это корзина, у которой есть product_id.поэтому я знаю, что это происходит из-за отношений, которые я объявил, но я не могу понять, как это сделать правильно.
Может кто-нибудь прийти и спасти меня ???
Спасибо большое, я надеюсьты меня понял !Желаю тебе хорошего дня