I have a model called debtors
. I'd like to have a relationship for all other debtors with the same phone_home
and phone_work
attributes.
I know I can do this:
public function dupes_phone_home()
{
return $this->hasMany('App\Debtor', 'phone_home', 'phone_home');
}
public function dupes_phone_work()
{
return $this->hasMany('App\Debtor', 'phone_work', 'phone_work');
}
How can I merge these two relationships into one so it can be used in eager loading, etc.?
Edit: example of what I want:
$debtor1 = Debtor::create([
'name' => 'Joe Blow',
'phone_home' => '123',
'phone_work' => '456',
]);
$debtor2 = Debtor::create([
'name' => 'Joe Blow Dupe 1',
'phone_home' => '123',
'phone_work' => '789',
]);
$debtor3 = Debtor::create([
'name' => 'Joe Blow Dupe 2',
'phone_home' => null,
'phone_work' => '456',
]);
$joe_with_dupes = Debtor::with('dupes')->get()->toArray();
Would give me something like:
[
'name' => 'Joe Blow',
'phone_home' => '123',
'phone_work' => '456',
'dupes' => [
[
'name' => 'Joe Blow Dupe 1',
'phone_home' => '123',
'phone_work' => '789',
],
[
'name' => 'Joe Blow Dupe 2',
'phone_home' => null,
'phone_work' => '456',
],
],
],
[
'name' => 'Joe Blow Dupe 1',
'phone_home' => '123',
'phone_work' => '789',
'dupes' => [
[
'name' => 'Joe Blow',
'phone_home' => '123',
'phone_work' => '456',
],
],
],
...