Я трачу почти один час на эту проблему. у меня есть User
модель и Event
модель, связанная с отношением ManyToMany (представляющим систему приглашений). Я сделал модель для сводного класса:
namespace App;
use Illuminate\Database\Eloquent\Relations\Pivot;
class Invitation extends Pivot
{
const PENDING = 0;
const ACCEPTED = 1;
const UNCERTAIN = 2;
const REFUSED = 3;
}
Это User
модель:
class User extends Authenticatable
{
// Deleted useless things
public function events()
{
return $this->belongsToMany('App\Event')
->using('App\Invitation')
->withPivot('status')
->withTimestamps();
}
}
И Event
модель:
class Event extends Model
{
public function guests()
{
return $this->belongsToMany('App\User')
->using('App\Invitation')
->withPivot('status')
->withTimestamps();
}
/**
* Return a list of guests who accepted the invitation.
*/
public function scopeAccepted($query)
{
return $query->wherePivot('status', Invitation::ACCEPTED);
}
}
Хотя это утверждение хорошо работает:
$event = Event::find(9)->guests()->wherePivot('status', Invitation::ACCEPTED)->get();
Метод scopeAccepted
дай мне эту ошибку:
Call to undefined method Illuminate\Database\Query\Builder::accepted()
с $event = Event::find(9)->guests()->accepted()->get();
Задача ещё не решена.
Других решений пока нет …