dakata__92
Super Moderator
Нещо тотално забих как да направя качествено прихващането на статус онлайн или не на потребител, спрямо таблица записваща активностите. Искам бързо да мога да взимам статуса на потребителя и информацията от последната активност.
Не ми се вижда коректно да го правя така.
Примерен отговор.
Модел.
Не ми се вижда коректно да го правя така.
PHP:
dd(User::with('online', 'offline')->first()->toArray());
Код:
array:12 [
"id" => 1
"name" => "Test"
"email" => "test@abv.bg"
"email_verified_at" => null
"created_at" => "2023-05-13T08:27:23.000000Z"
"updated_at" => "2023-05-14T12:33:46.000000Z"
"currency" => "BGN"
"deleted_at" => null
"online" => null
"offline" => array:11 [
"id" => 1149733
"level" => 1
"user_id" => 1
"method" => "POST"
"ip" => "127.0.0.1"
"created_at" => "2023-05-15T14:37:25.000000Z"
"updated_at" => "2023-05-15T14:21:36.000000Z"
]
]
Модел.
PHP:
<?php
namespace App\Models;
class User
{
/**
* @return HasMany
*/
public function activities(): HasMany
{
return $this->hasMany(
Activity::class,
'user_id',
'id'
);
}
/**
* @return HasOne
*/
public function online(): HasOne
{
return $this->hasOne(
Activity::class,
'user_id',
'id'
)
->latest()
->where('created_at', '>=', now()->subMinutes(10));
}
/**
* @return HasOne
*/
public function offline(): HasOne
{
return $this->hasOne(
Activity::class,
'user_id',
'id'
)
->latest()
->where('created_at', '<', now()->subMinutes(10));
}
}