Привет, друзья, пользователи StackOverflow!
Я борюсь за довольно простую задачу и буду очень рад, если кто-нибудь из вас сможет мне помочь. У меня есть 3 модели с вложенными отношениями «многие ко многим».
Моя первая модель - Wave , которая имеет отношение M2M с Employee :
Wave. php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Wave extends Model
{
public function employees()
{
return $this->belongsToMany('App\Employee');
}
Сотрудник , у которого есть многие ко многим с Волной и еще один со многими со многими с Экспертиза
Сотрудник. php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Employee extends Model
{
public function waves()
{
return $this->belongsToMany('App\Wave');
}
public function expertises()
{
return $this->belongsToMany('App\Expertise');
}
Наконец-то моя Экспертиза модель со многими ко многим с Сотрудник :
Экспертиза. php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Expertise extends Model
{
public function employees()
{
return $this->belongsToMany('App\Employee');
}
Здесь я бы хотел создать собственное свойство на Wave , чтобы получить все отличные экспертизы , которые сотрудников присвоенный этой волне обладать.
Это выглядело бы как одномерный набор различных экспертиз .
Это не кажется очень сложным, но я перепробовал много вещей и не смог заставить его работать.
Последнее, что я попробовал, это запросил модель Expertise, используя с и с PivotIn , но без успех:
Волна. php
public function getExpertisesAttribute()
{
$employees = $this->employees;
$expertises = Expertise::with('employees', function($q) use($employees) {
$q->wherePivotIn('employee_id', $employees->pluck('id')->toArray());
});
return $expertises;
}
При выполнении запроса появляется ошибка:
PHP Warning: mb_strpos() expects parameter 1 to be string, object given in /Users/Kaz/lab/MyProject/vendor/laravel/framework/src/Illuminate/Support/Str.php on line 107
К вашему сведению Я использую Laravel 5.8 на PHP 7.2
Большое спасибо за прочтение этого, и я надеюсь, что вы сможете мне помочь, потому что я чувствую себя немного застрявшим и все еще кажется как легко сделать!