راکت
حل شده

عدم شناسایی name از متد user

6 پاسخ

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

 $articles = Article::with('user')->latest()->take(۶)->get();
        foreach ( $articles as $article){
            return $article->user;
        }
id  ۱
level   "admin"
name    "sina"
email   "sinkoosha@gmail.com"
created_at  "۲۰۱۹-۰۹-۰۳ ۰۷:۱۹:۱۶"
updated_at  "۲۰۱۹-۰۹-۰۳ ۰۷:۱۹:۱۶

ولی چنین مقداری را ` return $article->user->name فرا خوانی می کنم متغیر name رو شناسایی نمی کنه
لطفا راهنمایی کنید با تشکر

@hesammousavi

ثبت پرسش جدید

پاسخ‌ها

6
بهرام
بهرام
@bahram

تخصص: Laravel Developer

بهترین پاسخ

این جوری که شما user رو تعریف کردید یعنی هر مقاله مربوط به چند کاربر میشه پس باید همون article->user$ رو هم داخل حلقه بذارید ولی اصولا چون هر مقاله مربوط به یک کاربره باید user رو به صورت زیر بنویسید

public  function  user(){

        return $this->belongsTo(User::class , 'id' , 'user_id');
    }

در این‌صورت کد خودتون اجرا میشه.

حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

به شکل زیر چک کنید

$article->user['name']
sina
sina
@sinkoosha

به این شکل هم جواب نداد تست کرده بودم

شاید پاسخ شما همین‌جا باشد

sina
sina
@sinkoosha

جالب این جاست که وقتی توی مدل article قصد تعریف متد user رو داشتم مجبور شدن چنین تعریفی کنم

  public  function  user(){

        return $this->hasMany(User::class , 'id' , 'user_id');
    }
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

درود
نوع رابطه نباید hasMany باشه... مگر اینکه قصد شما این باشه که: هر مقاله متعلق به چندین کاربر باشه.

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

به طور کلی رابطه‌ای که در این مورد پیاده‌سازی میشه به این شکله:

  • هر کاربر میتونه چندیدن مقاله داشته باشه (User hasMany Articles)
  • هر مقاله متعلق به یک کاربر است (each Article belongsTo a User)

موفق باشید

sina
sina
@sinkoosha

@ali.bayat
@bahram
ممنون از زاهنمایتون عالی بود

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

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