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

مشکل در جدول واسط در لاراول

@websaz
@ajdar9667
@rezajahangir
@mohaligateway
@Rp76
@hesammousavi
@juza66
وقتی میخوام اطلاعات جدول واسط رو بیرون بکشم مشکل داره

$user = Service::find(6);
foreach ($user->products as $role) {
    return  $role;
}

در مدل هم به این شکل تعریف کردم

public function products()
{
    return $this->belongsToMany(Product::class)->using(ProductService::class);
}

این ارور رو میده
Call to undefined method App\Models\ProductService::getNameAttribute()


ثبت پرسش جدید
رضا جهانگیر
تخصص : Full-Stack Developer
@rezajahangir 3 سال پیش مطرح شد
0

سلام به شما.
من یه مثال میزنم خدمتتون شما ربطش بدین به پروژه خودتون.
فرض کنید ما یه سایت خبری داریم و داخل سایت نویسنده ها داخل پنل کاربری خودشون مقاله ایجاد میکنن، حالا میخوایم داخل صفحه اصلی سایت نام نوسینده ای که مقاله مورد نضر رو ایجاد کرده رو نمایش بدیم، برای انجام این کار باید داخل مدل Article یه رابطه به صورت زیر تعریف کنیم.

public function user() {
    return $this->belongsTo(User::class);
}

بعد داخل متد کنترلر مربوطه به صورت زیر بنویسید.

$articles = Article::latest()->paginate(3);
return view('index', compact('articles'));

سپس داخل بلید هم به صورت زیر بنویسید.

@foreach($articles as $article)
      {{ $article->user->name }}
@endforeach

موفق باشید.


ftp
تخصص : ساده
@ftp 3 سال پیش مطرح شد
0

@rezajahangir
منظور من در رابطه های چند به چند هست


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 3 سال پیش مطرح شد
0

سلام دوست عزیز
اگر جداولتون رو قرار بدید بسیار عالی میشه
در روابط چند ب چند که جدول واسطی هم دارید به عنوان pivot فیلد های اضافه ی اون جدول رو قرار میدن و فراخوانی میکنن
چند مثال میزارم امیدوارم کمکتون کنه

توی مدل

    public function products()
    {
        return $this->belongsToMany(Product::class)->withPivot('count','price','id');
    }

توی کنترلر ها یا به طور کلی فراخوانیش

'count'=>$product->pivot->count*$parent->pivot->count

اگر توی توابع که برای جمع و اینا هست ک مجبوری اسم فیلد رو داخلش بزاری هم به شکل زیر

$price=$order->products()->where('name','LIKE','%هزینه ارسال%')->get()->sum('pivot.price');

یا

$data['bonded_total_price']+=$order->bondeds->sum('pivot.price');

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

        Schema::create('order_product', function (Blueprint $table) {
            $table->id();
            $table->unsignedBigInteger('product_id');
            $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
            $table->unsignedBigInteger('order_id');
            $table->foreign('order_id')->references('id')->on('orders')->onDelete('cascade');

            $table->integer('count')->default(0);
            $table->integer('price')->default(0);
        });

در رابطه با using اطلاعی ندارم اگر بیشتر توضیح بدین که چیکار کردین میخوایید چ کنید و جداول چیه بیشتر میشه کمک کرد


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

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