سلام دوستان؛ خسته نباشید، میخواستم بدونم راهی هست که یه مقدار رو به مدل ارسال کنیم و پس از محاسبه یه مقداری اپند بشه به دیتای خروجی، با یه مثال بهتر توضیح میدم، مثلا کاربران یه لوکیشن واسشون ثبت میشه توی دیتابیس، و ما یه لوکشینی داریم و میخوایم همه کاربران رو نسبت به این نقطه فاصلشون رو حساب کنیم، حالا میخوام بدونم میشه این لوکیشن رو به مدل ارسال کرد و با لوکیشن کاربر محاسبه صورت بگیره و فاصله در دیتای خروجی اپند بشه؟
البته میدونم که میشه همشو گرفت و یه فور زد روش و اینو به دیتا اضافه کرد، ولی میخوام ببینم این شکلی که من گفتم امکان پذیر هست یا نه؟ اگه هست به چه شکل؟
ممنون از لطف دوستان
درود
ابتدا یک accessor در مدل مورد نظر تعریف کنید:
class User extends Model
{
public function getDistanceAttribute()
{
// $output = logic for calculating distance;
return $output;
}
}
سپس پراپرتی appends رو داخل مدل به شکل زیر مقداردهی کنید:
protected $appends = ['distance'];
ممنون اقای بیات، تشکر، این مورد که میدونم، سوال منو متوجه نشدین فک کنم، میخوام یه لوکشین رو پاس بدم به مدل و بگم با لوکیشن کاربرا محاسبه کنه و یه پراپرتی به اسم distance رو مقدار دهی کنه، شبیه scope ها که میشه یه مقدار رو فرستاد به مدل و کوئری زد، به این شکل میشه؟
اینجوری که من متوجه شدم شما میخاین یه کاربر فاصله ش با بقیه کاربرا مشخصی بشه
اولا باید بینشون رابطه وجود داشته باشه(مثلا اسم رابطه 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; // اینجا باید کاراتونو انجام بدین برای محاسبه
}
@tefo.ha27
ممنون، ینی با این روش فاصله همه کاربرا نسبت به یه نقطه درمیاد؟این نقطه متغییره، و فاصله همه کاربرا نسبت به این میخوام دربیاد
بله دقیقا فقط این attribute که نوشتم یعنی distanceFromFriends (یا distance_from_friends) باید append کنین تا بتونین ازش استفاده ببرین
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟