How to specify Laravel relationships based on two (or more) columns (composite keys)
In Laravel Eloquent ORM, there is no way to define a relationship from one model to another by matching more than one column.
For instance, if you want to do something as the below with eager loading, the $this->blog_id
will be null while processing
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
public function posts()
{
//WON'T WORK WITH EAGER LOADING!!!
return $this->hasMany(Post::class)->where('blog_id', $this->blog_id);
}
}
I faced this problem and tried many approaches and it would not work till I found the package that works perfectly for me.
you can check the package out with the below link.
https://github.com/topclaudy/compoships
There is no need to duplicate how to use the package here cos the package docs are explanatory enough.
Subscribe to my newsletter
Read articles from Babatunde Daramola directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Babatunde Daramola
Babatunde Daramola
Over a decade in web development | PHP | Laravel | Js | Vue | React | nodejs | Educator. More = https://linktr.ee/ritechoice23