مجتبی
4 سال پیش توسط مجتبی مطرح شد
4 پاسخ

جایگزین شخصی به جای روابط در لاراول

سلام دوستان
من در پروژم مجبورم از روابط استفاده کنم
در روابط چند به به چند واقعا گیج شدم از نحوه استفاده کردن و وارد کردن دیتا و ....

اومدم به طور مثال خودم روابط چند به چند رو با اضافه کردن تیبلی به صورت مثلا

article_offer

خودم هندلش کردم.

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


ثبت پرسش جدید
نوب
تخصص : کدنویس نوب :)
@yk5742g 4 سال پیش آپدیت شد
0

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

روابط در لاراول بسیار راحته
یه مثال میزنم برات

فرضا یه جدول users داری و یه جدول userprofiles

خب 2 تا مدل داری به اسم user و userprofile

حالا چون هر کاربر میتونه یک پروفایل داشته باشه به صورت زیر باید متدها را در مدلها استفاده کنی

مدل user

<?php

namespace App;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class User extends Authenticatable
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];
    public function userProfile(){
       return $this->hasOne(user_profile::class);
    }
}

توی کد بالا در متد userprofile نوشتم که به هر کاربر یک پروفایل دارد (با کلمه hasOne)
و توی ورودیش نام مدل userprofile را صدا زدم

حالا مدل userprofile اینطوری میشه

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class user_profile extends Model
{
    public $timestamps = false;

    protected $fillable = ['user_id'];

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

خب اینجا اومدم و یه متد ساختم به اسم user و داخلش گفتم با کلمه کلیدی belongsTo یعنی این متعلق به مدل user هست

حالا اینجوری مقادیر جدول userprofile را صدا میزنم

auth()->user()->userProfile

مجتبی
تخصص : توسعه وب
@mojtaba.kh 4 سال پیش مطرح شد
0

@yk5742g
مرسی از مثال و توضیحات

اگر مشکل خوانایی و زیاد شدن خط کد ها رو بزاریم کنار ، در پروژه مشکلی ایجاد نمیشه به این صورت و بدون روابط پیشفرض انجام بدیم؟


نوب
تخصص : کدنویس نوب :)
@yk5742g 4 سال پیش مطرح شد
0

مشکل که ایجاد نمیشه اگر درست کد بزنی ولی واقعاااااااااااااا لا توابع خود لاراول یاد بگیر بنویس
چون اصولی تر هست و میزان باگ به کمترین حد ممکن میرسه


مجتبی
تخصص : توسعه وب
@mojtaba.kh 4 سال پیش مطرح شد
0

@yk5742g
نه یک مورد رو تست کردم اوکیه :)


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

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