Basi c Выберите с помощью Laravel Eloquent не работают - PullRequest
2 голосов
/ 19 февраля 2020

У меня 2 таблицы: User & Demands. Внутри таблицы Demands у меня есть user_id в качестве внешнего ключа. Пользователь входит в систему с именем (которое я прошел через сессию). То, что я хочу сделать, это: - иметь имя пользователя (его логин) -> так как у меня не реализован сеанс, я пишу имя непосредственно внутри кода. - Поиск его удостоверение личности благодаря его имени. - Поиск всех его требований с его удостоверением личности.

  $name = "Jason";
  $UserID = User::select('id')->where('name', '=', $name)->get();
  $User= User::find($UserID);
  $demands = Demand::where('user_id', '=', $UserID)->get();
  echo $demands;

Мой массив пуст. Но внутри моей базы данных у меня есть 3 требования к этому user_id ...

Ребята, у вас есть какие-нибудь подсказки, пожалуйста?

Сердечно.

Ответы [ 5 ]

1 голос
/ 19 февраля 2020

$UserID - это коллекция, а не целое число. Попробуйте это:

$name = "Jason";
$user = User::select('id')->where('name', '=', $name)->first();
$User= User::find($user->id);
$demands = Demand::where('user_id', '=', $User->id)->get();
echo $demands;
1 голос
/ 19 февраля 2020

Пожалуйста, измените

$UserID = User::select('id')->where('name', '=', $name)->get();

на

$UserID = User::select('id')->where('name', '=', $name)->first()->id;
1 голос
/ 19 февраля 2020

get функция возвращает гарантированное значение Eloquent Collection. Вы должны хотеть использовать функцию first. Эта функция вернет первую строку запроса.

 $name = "Jason";
  $UserID = User::select('id')->where('name', '=', $name)->first();
  $User= User::find($UserID);
  $demands = Demand::where('user_id', '=', $UserID->id)->get();
  echo $demands;

0 голосов
/ 19 февраля 2020

Все остальные правы, что первый запрос возвращает коллекцию. Но вы делаете дополнительный запрос, который здесь не нужен. Это может быть упрощено для запроса таблицы пользователей только один раз.

$name = "Jason";
$User = User::where('name', '=', $name)->first();
//$User= User::find($UserID); remove this as it is not needed.

if(!$User) {
    return "User not found";
}

$demands = Demand::where('user_id', '=', $User->id)->get();
echo $demands;
0 голосов
/ 19 февраля 2020

Поскольку пользователь вошел в систему, это означает, что он аутентифицирован. Попробуйте это

$UserID = Auth::user()->id;

$demands = Demand::where('user_id', '=', $UserID);

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