من یه جدول wishlist دارم با ساختار زیر
$table->id();
$table->unsignedBigInteger('product_id');
$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->timestamps();
این مدل wishlist
class Wishlist extends Model
{
protected $fillable = [
'product_id',
'user_id',
];
public function user()
{
return $this->belongsTo(User::class);
}
public function product()
{
return $this->hasMany(Product::class);
}
}
میخوام با این کد محصولات مورد علاقه هر کاربر رو بگیرم ولی به ارور میخورم
auth()->user()->wishlist()->products;
ErrorException
Undefined property: Illuminate\Database\Eloquent\Relations\HasMany::$product
https://ansolin.com/profile/wishlist
باید ریلیشن شیب چند به چند درست کنید چون هر یوزر ممکنه چنتا محصول داشته باشه و هر محصول ممکنه چنتا یوزر اونا نتخاب کرده باشن تو ویش لیست
User Model
public function wishlist() {
return $this->belongsToMany(Product::class,'wishlist');
}
Product Model
public function usersWhoLikedThisProduct() {
return $this->belongsToMany(User::class,'wishlist');
}
سلام.
اولین نکته ای که باید بهش توجه کنید، درک درست از روابط هست.
هر محصول میتونه توسط چند کاربر انتخاب بشه و هر کاربر میتونه چند محوصل رو انتخاب کنه، پس رابطه شما میشه چند به چند.
حالا باید در مدل های خود روابط رو به صورت زیر بنویسید.
مدل Product:
public function users() {
return $this->belongsToMany(User::class);
}
مدل User:
public function wishlists() {
return $this->belongsToMany(Product::class);
}
موفق باشید.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟