راکت

پاس دادن مقدار به مدل و اضافه کردن به کالکشن

6 پاسخ

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

البته میدونم که میشه همشو گرفت و یه فور زد روش و اینو به دیتا اضافه کرد، ولی میخوام ببینم این شکلی که من گفتم امکان پذیر هست یا نه؟ اگه هست به چه شکل؟

ممنون از لطف دوستان

ثبت پرسش جدید

پاسخ‌ها

6
علی بیات
علی بیات
@ali.bayat

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

درود

ابتدا یک accessor در مدل مورد نظر تعریف کنید:

class User extends Model
{

    public function getDistanceAttribute()
    {
    //  $output = logic for calculating distance;

        return $output;
    }
}

سپس پراپرتی appends رو داخل مدل به شکل زیر مقداردهی کنید:

protected $appends = ['distance'];
محمد قربانی
محمد قربانی
@mohammadghorbani1992

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

@ali.bayat

ممنون اقای بیات، تشکر، این مورد که میدونم، سوال منو متوجه نشدین فک کنم، میخوام یه لوکشین رو پاس بدم به مدل و بگم با لوکیشن کاربرا محاسبه کنه و یه پراپرتی به اسم distance رو مقدار دهی کنه، شبیه scope ها که میشه یه مقدار رو فرستاد به مدل و کوئری زد، به این شکل میشه؟

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

TEFO
TEFO
@tefo.ha27

تخصص: لاراول

اینجوری که من متوجه شدم شما میخاین یه کاربر فاصله ش با بقیه کاربرا مشخصی بشه
اولا باید بینشون رابطه وجود داشته باشه(مثلا اسم رابطه friends هستش)


public function getDistanceFromFriendsAttribute()
{
    return $this->friends->map->append('distance');
}
public function getDistanceAttribute()
{
//  $output = logic for calculating distance;

    return $output;
}

اگه هم شرط محاسبه دیتا هست میتونین با استفاده از mutator ها این کارو انجام بدین به این شکل

public function setDistanceAttribute($value)
{

    $this->attributes['distance'] = $value; // اینجا باید کاراتونو انجام بدین برای محاسبه
}
محمد قربانی
محمد قربانی
@mohammadghorbani1992

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

@tefo.ha27
ممنون، ینی با این روش فاصله همه کاربرا نسبت به یه نقطه درمیاد؟این نقطه متغییره، و فاصله همه کاربرا نسبت به این میخوام دربیاد

TEFO
TEFO
@tefo.ha27

تخصص: لاراول

بله دقیقا فقط این attribute که نوشتم یعنی distanceFromFriends (یا distance_from_friends) باید append کنین تا بتونین ازش استفاده ببرین

محمد قربانی
محمد قربانی
@mohammadghorbani1992

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

@tefo.ha27

مممنون، تست کنم ببینم چطو میشه، لطف کردین

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

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