//Request
$messages = ChatMessage::where('user_id', Auth::id())
->orderBy('created_at', 'asc')
->select(['chat_id'])
->take(5)
->distinct()
->with('chat.last_messages')
->get();
$messages = ChatMessage::where('user_id', Auth::id())
->orderBy('created_at', 'asc')
->select(['chat_id'])
->take(5)
->distinct()
//->with('chat.last_messages')
->with(['chat'=>function($query) {
$query->with(['last_messages'=>function($query) {
$query->limit(5);
}]);
}])
->get();
//Class Message
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ChatMessage extends Model
{
protected $fillable = ['chat_id','user_id', 'text'];
public function user()
{
return $this->hasOne('App\Model\UserFieldsValues','id','user_id')/*->take(5)*/->select(['id','value']);
}
public function chat()
{
return $this->hasOne('App\Models\Chat','id','chat_id');
}
}
//Class Chat
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Chat extends Model
{
protected $fillable = ['name','id'];
public function last_messages()
{
return $this->hasMany('App\Models\ChatMessage')->orderBy('created_at', 'asc')->limit(5);
}
public function unread_messages()
{
return $this->hasMany('App\Models\ChatMessage')->orderBy('created_at', 'asc')->where('read',0)->take(5);
}
}
///
Как взять 5 дочерних записей от родителя за один запрос?
На данный момент из базы данных взяты 5 сообщений для всех чатов, а не 5 для каждого.
И извините, вниз текст для подтверждения сообщения сайта
.................................................. .................................................. ////////////////