Laravel belongsTo по нескольким ключам

У меня есть 2 таблицы: rigs с колонками id nme GPU_id platform_id. ... и parts с колонками id name message ...

и мне нужно в модели Rig определить отношение messages, чтобы я мог в нём получить message из таблицы parts по GPU_id, platform_id ...

Как это сделать?

Я нашел на просторах интернета такой пакет: https://github.com/topclaudy/compoships Но у меня он не работает.

    class Rig extends Model 
{
 use \Awobaz\Compoships\Compoships;

// Не работает 
 public function messages() 
{ 
return $this 
->belongsTo(Part::class, ['GPU_id', 'platform_id'], ['id', 'id']); 
} 
 
// Работает 
 public function messages() 
{ 
return $this 
->belongsTo(Part::class, ['GPU_id'], ['id']); 
}
}class Rig extends Model 
{
 use \Awobaz\Compoships\Compoships;

// Не работает 
 public function messages() 
{ 
return $this 
->belongsTo(Part::class, ['GPU_id', 'platform_id'], ['id', 'id']); 
} 
 
// Работает 
 public function messages() 
{ 
return $this 
->belongsTo(Part::class, ['GPU_id'], ['id']); 
}
}

Сори за оформление, пишу с телефона, ТК у стековерфлоу опять сломалась авторизация через ВК)


Ответы (1 шт):

Автор решения: Color kat

Удалось решить проблему с помощью whereIn и accessor вместо relationship, но так в принципе тоже сойдёт)

public function getBreakdownsAttribute() { 
 return Having::class::
whereIn('id', [ 
 $this->GPU_id, 
 $this->platform_id, 
 $this->RAM_id, 
 $this->PSU_id, 
 $this->case_id 
 ])->get(); 
 }
→ Ссылка