فرشید مرادی
3 سال پیش توسط فرشید مرادی مطرح شد
8 پاسخ

گرفتن اطلاعات با استفاده از رابطه pivot

سلام ، دوستان من سه مدل دارم با نام های Attribute , AttributeValue , Product که با استفاده از رابطه لاراول باهم ارتباط دارن به این صورت

class Attribute extends Model
{
    protected $fillable = ['name'];

    public function values()
    {
        return  $this->hasMany(AttributeValue::class);
    }
}
class AttributeValue extends Model
{
    protected $fillable = ['value'];

    public function attribute()
    {
        return $this->belongsTo(Attribute::class);
    }
}

برای اینکه ب مقادیر AttributeValue دسترسی داشته باشم یک مدل دیگ اضافه کردم به این صورت

class ProductAttributeValues extends Model
{

    public function value()
    {
        return $this->belongsTo(AttributeValue::class , 'value_id' , 'id');
    }
}

و این هم مدل Product من هست

class Product extends Model
{

    protected $fillable = ['title' , 'description' , 'price' , 'inventory' , 'view_count' , 'image'];

    public function attributes()
    {
        return $this->belongsToMany(Attribute::class)->using(ProductAttributeValues::class)->withPivot(['value_id']);
    }
}

حالا برای فراخوانی کردن دیتا با استفاده از pivot ارور دارم کدی که مینویسم به این شکل هست

 @foreach ($product->attributes()->pivot->value as $item)

                                                        @endforeach

@hesammousavi
@mhyeganeh
@ali.bayat


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 3 سال پیش مطرح شد
0

متن ارور رو قرار بدید


فرشید مرادی
تخصص : noob
@eniack 3 سال پیش آپدیت شد
0

@ali.bayat
بفرمایید

ErrorException
Undefined property: Illuminate\Database\Eloquent\Relations\BelongsToMany::$pivot (View: C:\Users\ENIACK\Desktop\farshid_moradi\resources\views\product.blade.php)

علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 3 سال پیش مطرح شد
0

ببینید قبل از as شما باید از یک کالکشن یا آرایه استفاده کنید و بعد اون رو پیمایش کنید
حالا متن خطا (Undefined property) داره میگه چنین پراپرتی وجود نداره و درست هم هست

باید رابطه attributes رو به شکل یک پراپرتی صدا بزنید تا به شما یک کالکشن برگردونه


@foreach ($product->attributes as $item)

@endforeach

روش بالا رو امتحان کنید


فرشید مرادی
تخصص : noob
@eniack 3 سال پیش آپدیت شد
0

@ali.bayat
ممنونم از پاسخگوییتون پیمایش انجام میشه
ولی بازم ارور میده ، کدم رو به این صورت نوشتم

{{$item->pivot->value}}

و متن ارور

ErrorException
Trying to get property 'pivot' of non-object (View: C:\Users\ENIACK\Desktop\farshid_moradi\resources\views\product.blade.php)

علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 3 سال پیش مطرح شد
0

این متن خطا هم داره میگه Item اصلا آبجکت نیست

برای تست رابطه Many to Many که نوشتید. از Tinker استفاده کن:

  • داده ها رو به شکل دستی به جدول ها اضافه کن
    و رابطه رو داخل تینکر فراخوانی کن
    ببین اصلا جوابی میگیری یا خطا داری

فرشید مرادی
تخصص : noob
@eniack 3 سال پیش مطرح شد
0

@ali.bayat
دقیقا نمیتونم هیچ داده ای ازش بگیرم نمیدونم مشکل از کجاس


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 3 سال پیش مطرح شد
0

متد belongsToMany آرگومان های دیگه ای هم میپذیره مثل اسم pivot و Column ها
اسم جدول واسطت رو چی گذاشتی ؟

توی تینکر امتحان کن و متن خطا رو اینجا منتشر کن


فرشید مرادی
تخصص : noob
@eniack 3 سال پیش آپدیت شد
0

@ali.bayat
راستش من با تینکر کار نکردم ،
جدول رابط ProductAttributeValues
هست کدش هم بالا هس


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام