У меня ситуация, которую я не могу исправить, у меня есть 3 таблицы / модели со структурой, как показано ниже:
Client->hasMany(Order::Class)Order->belongsTo(Client::Class) и Order->belongsTo(Status::Class)Status->hasMany(Order::class)Я хочу иметь возможность группировать заказы каждого клиента по их статусам, например: 3 отменены - 4 выполнены - 5 обработки
Я пробовал это, но не получилось :(
Client Model {
public function {
return $this->orders()->selectRaw('status_id, count(id) as total')->groupBy('status_id);
// orders() = is the relation a client hasmany orders
}
}
может кто-нибудь помочь, пожалуйста, спасибо
это означает, что это не сработало так, как я ожидал, мне все еще нужно найти клиента и цепочку по этому методу, чтобы сгруппировать его заказы по статусу, я знаю, что я все еще что-то упускаю, также есть ограничение, потому что не у всех клиентов еще есть заказы, поэтому мне нужно реализовать какой-то $ clients = Client :: has ('orders'), и это вернет пустой массив элемента
Добавьте образцы данных и ожидаемый результат.
У меня есть модели деталей ниже: class Client extends Model {public function orders () {return $ this-> hasMany (Order :: class); }} class Order extends Model {public function client () {return $ this-> ownTo (Client :: class); }} class Status расширяет модель {public function orders () {return $ this-> hasMany (Order :: class); }}
У меня есть модели деталей ниже: class Client extends Model {public function orders () {return $ this-> hasMany (Order :: class); }} class Order extends Model {public function client () {return $ this-> ownTo (Client :: class); }} class Status расширяет модель {public function orders () {return $ this-> hasMany (Order :: class); }} например, я хочу, чтобы список отображался, например: Заказы: 3 завершено - 2 обработки - 2 отменено
Как вы используете опубликованный вами запрос / отношение?






Определите таким образом ваши отношения в модели клиента
public function orders()
{
return $this->hasMany(Order::class);
}
public function getOrdersCompletedAttribute()
{
return $this->orders->where('id_status', 5)->count();
}
public function getOrdersProcessingAttribute()
{
return $this->orders->where('id_status', 1)->count();
}
Предположим, что статус 1 = «обработка» и 5 = «завершено».
Вы можете получить доступ к атрибуту de следующим образом:
$client->orders_completed
Чтобы получить 4
Что вы имеете в виду под «не сработало»?