امین
2 سال پیش توسط امین مطرح شد
4 پاسخ

رابطه 1-1 در لاراول

سلام من تازه لاراول رو یاد گرفتم الان میخوام تو صفحه حساب کاربری شخصی که لاگین هست این موارد رو بنویسم:
نام و ایمیل از جدول user
تاریخ انقضا اشتراک کاربر از جدول sub
(بعضی کاربر ها که اشتراک تهیه کردن تو جدول sub اطلاعاتشون ذخیره میشه)
این کار ها رو کردم:
مدل user:

 public function sub(){
        return $this->hasOne('sub');
    }

تو مدل sub چیزی ننوشتم

این پایینی controll ام هست:

 public function index()
    {
        $detail = user::find(1)->sub();
        $users = Auth::user();
        return view('account',compact('users','detail'));
    }

و این هم صفحه blade اکانت کاربر هست(که برای تست خواستم تاریخ انقضا اشتراک اش رو چاپ کنم):

{{$detail->expired}}

خطایی که میگیرم:
Class "sub" not found


ثبت پرسش جدید
رضا جهانگیر
تخصص : Full-Stack Developer
@rezajahangir 2 سال پیش آپدیت شد
1

سلام به شما دوست عزیز.
اول لازم میدونم چندتا نکته رو خدمتتون عرض کنم. (خدایی نکرده قصد بی احترامی ندارم و تنها هدفم کمک به افرادی هست که دارن مسیر یادگیری را اشتباه میرن جلو)
یکی از ویژگی هایی که داخل افرادی تازه کار دیده میشه به جای اینکه وقت بذارن و مفاهیم پایه رو به درستی یاد بگیرن و بعد وارد پروژه بشن، مفاهیم پایه رو به خوبی درک نمیکنن و داخل این جور مسائل گیر میکنن، پس توصیه من به شما اینه که از سایت لاراول مفاهیم رو به درستی یاد بگیرید و بعد شروع به پیاده سازی کنید.
و اما جواب سوالتون، شما باید چندتا کار انجام بدین:
زمانی که میگین رابطه یک به یک هست پس باید این رابطه رو داخل مدل هاتون تعریف کنید.
مدل User:

public function sub()
{
    return $this->hasOne(Sub::class);
}

مدل Sub:

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

کنترلر:

public function index()
{
    return view('account');
}

بلید:

{{ auth()->user()->name }}
{{ auth()->user()->email}}
{{ auth()->user()->sub->expired }}

موفق باشید.


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 2 سال پیش مطرح شد
1

نکات دوست عزیز @rezajahangir کاملا صحیح هست. فقط دو مورد اصلاحیه ریز داره:

مدل User:

public function sub() {
    return $this->hasOne(Sub::class);
}

مدل Sub:

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

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

سلام به شما جناب @mhyeganeh عزیز.
بله درست میفرمایید من جا به جا نوشتم، آخه دیشب آخر وقت داشتم جواب میدادم دیگه خون به مغزم نرسید.😂
دوست عزیز @alavi.gavad موردی که جناب @mhyeganeh فرمودن رو داخل پاسخی که دادم اصلاح کردم و شما تمام مواردی که گفتم رو انجام بدین کدتون به درستی کار میکنه.
موفق باشید.


امین
@alavi.gavad 2 سال پیش آپدیت شد
1

خییلی ممنون اقای @mhyeganeh و @rezajahangir که سوال بنده رو کامل پاسخ دادین
مواردی که هم که درمورد یادگیری مفاهیم و خوندن doc لاراول گفتین حتما تو برنامه ام میذارم


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

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