-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Can we use join or aggregrate in laravel with model? #2509
-
Can we use join or aggregrate in laravel with model?
i have try to do it but I am getting error:
{ "message": "call_user_func_array(): Argument #1 ($callback) must be a valid callback, class MongoDB\\Collection does not have a method \"aggregrate\"", "exception": "TypeError", "file": "/var/www/html/CW_V2/html/vendor/jenssegers/mongodb/src/Collection.php", "line": 42, "trace": [ { "file": "/var/www/html/CW_V2/html/vendor/jenssegers/mongodb/src/Collection.php", "line": 42, "function": "call_user_func_array" }, ...............................................
My model:
`<?php
namespace Modules\Report\Entities;
use Jenssegers\Mongodb\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Modules\Websites\Entities\Websites;
class ReportOutput extends Model
{
use HasFactory;
protected $table = 'reports_output';
protected $primaryKey = '_id';
public $timestamps = true;
protected $fillable = [
'site_id',
'cycle_id',
'import',
'download',
'client_feed'
];
public function websites(){
return $this->hasOne(Websites::class,'_id','site_id');
}
public function report_with_name(){
return self::get();
}
protected static function newFactory()
{
return \Modules\Report\Database\factories\ReportOutputFactory::new();
}
}
`
my controller function :
` return ReportOutput::raw(function($collection){
return $collection->aggregrate([['$match' => ['site_id' => 'site_id']]],
[[
'$lookup' => [
'as'=>'info',
'from'=>'websites',
'foreignField'=>'site_id',
'localField'=>'_id'
]
]]);
});`
Beta Was this translation helpful? Give feedback.