Laravel красноречивый find (), имеющий пользовательский первичный ключ, не найден

Я установил в своей модели пользовательский первичный ключ как:

protected $primaryKey = 'id_player';

Он установлен как первичный ключ на MySql.

Но если я сделаю

$rows = DB::table("players")->find($playerId);

Он не возвращает никаких элементов (но он существует).

Модель игроков

 namespace App;
 use Illuminate\Database\Eloquent\Model;

 class Players extends Model{
    protected $primaryKey = 'id_player';
 }

ИгрокиКонтроллер

namespace App\Http\Controllers\Players;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Players;
use Illuminate\Support\Facades\DB;

class PlayersController extends Controller{
   ...
   ...
}

Я новичок в Laravel, что мне не хватает?

Я думаю, вы уже пробовали это, но: $rows = DB::table("players")->where('id_player', $playerId)->first(); возвращает ли тот, который вы ищете?

namelivia 02.07.2019 16:36

Попробуйте использовать способ Eloquent: $players = Players::find($playerId); Это предполагает, что имя модели Players

Petay87 02.07.2019 16:37

@namelivia, да, я сделал, и это работает. Но я хотел бы попробовать другой вариант.

Uncoke 02.07.2019 16:38

Просто примечание: соглашение Laravel заключается в том, что имя модели в единственном числе, поэтому Player вместо Players. Имя таблицы во множественном числе, но поскольку модель представляет один экземпляр (строку) в базе данных, оно должно быть в единственном числе (подумайте об одном «игроке»)

Tim Lewis 02.07.2019 16:52

Спасибо @TimLewis. Мне нужно использовать конвенцию Laravel. Спасибо за замечание.

Uncoke 02.07.2019 16:53
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
5
2 940
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы делаете запрос из таблицы.

Если вы хотите использовать модель primaryKey, вам необходимо получить доступ из Model eloquent

//Предположим, имя вашей модели — User

$row = App\User::find($playerId);

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

Uncoke 02.07.2019 16:44

да. Ваша модель абсолютно права. Вам нужно только использовать выборку, используя модель App\Players::find($playerId); вместо DB::table("players")->find($playerId);. Ответ должен работать нормально.

Lizesh Shakya 02.07.2019 16:47

Возможно, я что-то упустил в контроллере, потому что получаю эту ошибку: «SQLSTATE [42S22]: Столбец не найден: 1054 Неизвестный столбец« players.id »<-- обратите внимание на первичный ключ« id »вместо моего собственного.

Uncoke 02.07.2019 16:51

Не могли бы вы выложить свой контроллер? Он отлично работает в моем локальном. Возможно проблема в контроллере.

Lizesh Shakya 02.07.2019 16:58

Большое спасибо! Фиксированный! Произошло недоразумение... открыто слишком много похожих файлов! Теперь все работает! Большое спасибо за ваше время!

Uncoke 02.07.2019 17:05

Это будет работать:

$rows = DB::table("players")->where('id_player', $playerId)->first();

Другие вопросы по теме