Laravel Неопределенный метод - PullRequest
0 голосов
/ 20 апреля 2019

Я получаю следующую ошибку в моем запросе, если в моей модели существует метод интереса.

Вызов неопределенного метода Illuminate \ Database \ Query \ Builder :: Interest ()

Контроллер:

public function index() {
    $user_id = auth()->user()->id;
    $user = User::find($user_id);

    $interests = Space::where('user_id', $user_id)->interest()->get();

    return view('dashboard')->with('space', $user->space)->with('interest', $interests->space);
}

Космическая модель:

public function user(){
    return $this->belongsTo(User::class);
}

public function interest(){
    return $this->hasMany(Interest::class);
}

Модель интереса:

public function user(){
    return $this->belongsTo(User::class);
}

public function interest(){
    return $this->belongsTo(Space::class);
}

Ответы [ 2 ]

0 голосов
/ 20 апреля 2019
Space::where('user_id', $user_id)->interest()->get();

Строка показывает ошибку, потому что метод interest не существует в построителе запросов или областях действия модели

Но я думаю, что вы что-то неправильно поняли

Загрузка отношения в коллекции

Space::where('user_id', $user_id)->with('interest')->get();

Будет работать

И

$singleFind = Space::findOrFail($yourId)->interest();

Будет работать так, как вы ожидали

Надеюсь, что все ясно

0 голосов
/ 20 апреля 2019

Попробуй с этим, Прежде всего, вы можете получить доступ к идентифицированному идентификатору пользователя по этому auth()->id()

Для отношений в контроллере

    $interests = Space::with(['interest'])->where('user_id', $user_id)->get();

Для более Laravel eager loading

Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...