Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

Anja's avatar
Level 1

hasMany Model don't work

$LastWeek = DB::table('group')
                                     ->where('group.region','=',$regionName)
                                     ->whereBetween('date',[$date1, $date2])
                                     ->join('sale_number', 'group.sales_person_id', '=', 'sale_number.id')
                                     ->selectRaw("sale_number.id,SUM(number) as sum_prev_week")
                                     ->groupBy('sale_number.id')
->get();

group table region, sales_person_id

sale_number table id, date number

Now I am using the above query work fine. I am trying to use Laravel hasMany model.

class Group extends Model
{
    use HasFactory;

    public function sale_number()
    {
        return $this->hasMany(SaleNumber::class,'id','sales_person_id');
    }

$lastWeek = Group::where('group.region','=',$regionName)
                                    ->with('sale_number')
                                    ->selectRaw("sale_number.channel,SUM(number) as sum_prev_week")
                                    ->groupBy('sale_number.id')
                                    ->get();

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'sale_number.id' in 'field list'

SELECT
  sale_number.id,
  SUM(number) AS sum_prev_week
FROM
  `group`
WHERE
  `group`.`region` = Midwest
GROUP BY
  `sale_number`.`id`
0 likes
3 replies
SilenceBringer's avatar

@anja you need to read more how eager loading working. When you use with IT DO NOT load this data together with the main query. It loads the data from the main query first, and THEN perform second query to eager load related data. That's why you do not have sale_number joined

Here (as far as you use grouping) you still need to use join with your eloquent query

Also I see you start with the Category model, not the Group model. Why?

Anja's avatar
Level 1

@SilenceBringer It is Group model. The real model name is Category. I change the model name when I post to ask.

SilenceBringer's avatar

@Anja the real question is: if you extract 2 columns sale_number.id,SUM(number) as sum_prev_week and both are from sale_number table - why you need to join group at all?

Please or to participate in this conversation.