دوستان این امکان وجود داره که وقتی یه ریلیشن رو با with میگیریم،بشه داخلش چیزی رو چک کرد و اگه شرط برقرار بود یه دیتا اضافه کنه
مثلا،وقتی پیام های یه گفتگو رو میگیریم،بشه داخل فانکشن with یه شرطی رو بررسی کرد
$conversations = Conversation::with(['messages' => function($query){
}])->get();
بله. با whereHas میشه این کارو کرد.
مثلا پیام های فعال یه گفتگو رو بخوایم بگیریم:
$conbersations = Conversation::whereHas('messages', function($q){
$q->where('active', true);
})->get();
بله،ولی میخوام شرط بذارم و اگه ظرط برقرار بود یه دیتا اضافه کنم به کالکشن
@smartgarden2016
این مشکل رو به این شکل حل کردم، یه اتریبیوت اپند کردم و توی اکسسور رابطه زدم و حل شد،حالا یه مشکل دیگه هست که میخوام براساس این اتریبیوتی که اپند کردم سورت کنه،ولی سورت نمیکنه
protected $appends = ['unreadMessage'];
...
public function getUnreadMessageAttribute( ) {
return $this->messages()->latest()->first()->role == 'user' ? 1 : 0;
}
......
$conversations = Conversation::withCount('messages')->get()->sortByDesc('unreadMessage');
الان این سورت درست کار نمیکنه
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟