Я установил в своей модели пользовательский первичный ключ как:
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, что мне не хватает?
Попробуйте использовать способ Eloquent: $players = Players::find($playerId); Это предполагает, что имя модели Players
@namelivia, да, я сделал, и это работает. Но я хотел бы попробовать другой вариант.
Просто примечание: соглашение Laravel заключается в том, что имя модели в единственном числе, поэтому Player вместо Players. Имя таблицы во множественном числе, но поскольку модель представляет один экземпляр (строку) в базе данных, оно должно быть в единственном числе (подумайте об одном «игроке»)
Спасибо @TimLewis. Мне нужно использовать конвенцию Laravel. Спасибо за замечание.






Вы делаете запрос из таблицы.
Если вы хотите использовать модель primaryKey, вам необходимо получить доступ из Model eloquent
//Предположим, имя вашей модели — User
$row = App\User::find($playerId);
хм спасибо за помощь можешь написать что мне нужно использовать в моей модели для работы? Я собираюсь обновить пост, показав вам мою настоящую модель...
да. Ваша модель абсолютно права. Вам нужно только использовать выборку, используя модель App\Players::find($playerId); вместо DB::table("players")->find($playerId);. Ответ должен работать нормально.
Возможно, я что-то упустил в контроллере, потому что получаю эту ошибку: «SQLSTATE [42S22]: Столбец не найден: 1054 Неизвестный столбец« players.id »<-- обратите внимание на первичный ключ« id »вместо моего собственного.
Не могли бы вы выложить свой контроллер? Он отлично работает в моем локальном. Возможно проблема в контроллере.
Большое спасибо! Фиксированный! Произошло недоразумение... открыто слишком много похожих файлов! Теперь все работает! Большое спасибо за ваше время!
Это будет работать:
$rows = DB::table("players")->where('id_player', $playerId)->first();
Я думаю, вы уже пробовали это, но:
$rows = DB::table("players")->where('id_player', $playerId)->first();возвращает ли тот, который вы ищете?