محسن بستان
6 سال پیش توسط محسن بستان مطرح شد
3 پاسخ

مشکل در روابط مدل ها

سلام دوستان . فرض کنید که من یک مدل پست و یک مدل یوزر دارم. من میخوام که در نتیجه زیر author_id در آریه داخل پست مربوطه اطلاعات کاربر نمایش داده بشه.

[
    "id" => 2
    "title" => "test"
    "slug" => "test"
    "description" => "test"
    "body" => "test"
    "image" => null
    "tags" => "test"
    "author_id" => 1
    "cat_id" => 1
    "created_at" => "2019-01-24 00:00:00"
    "updated_at" => "2019-01-24 00:00:00"
  ]

مثلا مثل زیر :

[
    "id" => 2
    "title" => "test"
    "slug" => "test"
    "description" => "test"
    "body" => "test"
    "image" => null
    "tags" => "test"
    "author" => [
    "id" => 1
    "name" => "محسن بستان"
    "email" => "mohsenbostandev@gmaIl.com"
    "email_verified_at" => null
    "password" => "4hcYj0XxSZaLySE.b9sm"
    "image" => null
    "remember_token" => "LdpHPcMItnraYxhwZH4yuzPJo6GMZfmJyXDkBukL8RqGixa"
    "created_at" => "2019-01-22 13:13:18"
    "updated_at" => "2019-01-22 13:13:18"
  ]
    "cat_id" => 1
    "created_at" => "2019-01-24 00:00:00"
    "updated_at" => "2019-01-24 00:00:00"
  ]

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

میتونید رابطه author رو در یکی از پراپرتی‌های مدل Post اضافه کنید.

class Post extends Model
{

    protected $appends = ['author'];

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

    public function getAuthorAttribute()
    {
        return $this->author();
    }

}

البته از گزینه Eager-Loading هم میتونید استفاده کنید

protected $with= ['author'];

mahdi khanzadi
تخصص : backend developer at Snapp mar...
@khanzadimahdi 6 سال پیش مطرح شد
0

شما میتونید در مدل مربوط به پست های خودتون یه رابطه به صورت زیر تعریف کنید:

public function author()
{
    return $this->belongsTo('App\Models\User');
}

بعد از این میتونید به صورت زیر به اطلاعات نویسنده یا همون author دسترسی داشته باشید به صورت کد زیر :

dd($post->author)

محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 6 سال پیش آپدیت شد
0

@khanzadimahdi
خودمم اینطوری نوشتم اما بالا گفتم که چه طوری بشه. چون من این رو داخل api قرار میدم و داخل api چطوری من باید از متد های لاراول استفاده کنم !!!


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

میتونید رابطه author رو در یکی از پراپرتی‌های مدل Post اضافه کنید.

class Post extends Model
{

    protected $appends = ['author'];

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

    public function getAuthorAttribute()
    {
        return $this->author();
    }

}

البته از گزینه Eager-Loading هم میتونید استفاده کنید

protected $with= ['author'];

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

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