Files
eatvio-infra/app/Models/Chat.php
Anatoliy Poloz 92a54106ef analysators added
2023-12-18 14:36:32 +03:00

49 lines
1.4 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Chat extends Model
{
use HasFactory;
protected $casts = ['created_at' => 'datetime:Y-m-d H:i:s'];
public function scopeWithLastUserMessage(mixed $query, int $userId)
{
return $query
->where('from_user_id', $userId)
->orWhere('to_user_id', $userId)
->orderBy('updated_at', 'desc')
->first();
}
public function scopeWithLastTenMessages(mixed $query, int $userId, int $recipientId)
{
return $query
->where('from_user_id', $userId)
->where('to_user_id', $recipientId)
->orWhere(function ($query) use ($userId, $recipientId) {
return $query->where('from_user_id', $recipientId)
->where('to_user_id', $userId);
})
->orderBy('created_at', 'desc')
->limit(20);
}
public function scopeWithLastMessage(mixed $query, int $userId, int $recipientId)
{
return $query
->where('from_user_id', $userId)
->where('to_user_id', $recipientId)
->orWhere(function ($query) use ($userId, $recipientId) {
return $query->where('from_user_id', $recipientId)
->where('to_user_id', $userId);
})
->orderBy('created_at', 'desc')
->first();
}
}