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

- 2 هفته پیش
توسط sina آپدیت شد
sina ( 2600 تجربه )
2 هفته پیش

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

 $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

بهترین پاسخ انتخاب شده توسط sina
بهرام
2 هفته پیش

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

public  function  user(){

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

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

حسام موسوی ( 204834 تجربه )
2 هفته پیش
تخصص : طراح و برنامه نویس

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

$article->user['name']
sina ( 2600 تجربه )
2 هفته پیش

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

sina ( 2600 تجربه )
2 هفته پیش

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

  public  function  user(){

        return $this->hasMany(User::class , 'id' , 'user_id');
    }
بهرام ( 3778 تجربه )
2 هفته پیش
تخصص : Laravel and Vuejs developer

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

public  function  user(){

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

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

علی بیات ( 191857 تجربه )
2 هفته پیش
تخصص : توسعه دهنده ارشد وب

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

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

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

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

موفق باشید

sina ( 2600 تجربه )
2 هفته پیش

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

برای ارسال پاسخ باید وارد سایت شوید