Laravel / PHP отображает неправильный вывод для переменной - PullRequest
0 голосов
/ 03 сентября 2018

Используя Laravel 5.4 и PHP 7.0+, mysql 5.7 У меня есть запрос, который возвращает массив с правильной информацией.

модель propoffice

namespace App\models\core;

class propoffice extends \App\Model
{
    protected $primaryKey = 'officeID';
} 

Вот мой начальный запрос

  $officeList=propoffice::select('officeID','xOfficeID')
  ->orderBy('officeID','desc')
  ->take(1)
  ->get();

Есть тонны записей, но давайте просто посмотрим на одну. Вот почему у меня есть дубль (1).

dd($officeList)

Понятно

  #attributes: array:2 [▼
    "officeID" => "123"
    "xOfficeID" => "123"
  ]
  #original: array:2 [▼
    "officeID" => "123"
    "xOfficeID" => "123"
  ]

Запуск цикла

foreach($officeList as $the){
    echo $the->officeID;
}

Вместо 123 - я вижу 0 для поля officeID, но вижу 123 для поля xOfficeID.

У меня нет javascript или jquery, где выполняются изменения значений или что-то сложное происходит.

Между массивом и выводом нет другого кода, поэтому он должен сводиться к некоторому процессу laravel / php, в котором я не участвую напрямую.

Данное поле действительно является именем поля в другом месте, и значения НЕ будут совпадать. Я чувствую, что это в корне, но не знаю, как и где искать.

EDIT: У меня была моя модель, устанавливающая primaryKey для officeID, который является varchar. В laravel primaryKey, как ожидается, будет целым числом, которое ускользнуло от меня. Таким образом, с необработанными данными все было в порядке, но при возврате значений в выходных данных нецелочисленные значения были мутированы как 0 моделью

1 Ответ

0 голосов
/ 03 сентября 2018

Вы получаете 0, потому что существует конфликт между вашей моделью и вашим столом

в вашей модели вы устанавливаете officeID в качестве первичного ключа, но в вашей таблице это столбец varchar. Модели ожидают, что столбец primaryKey будет целым числом.

Это дает вам ошибку. Так что вы должны либо

  1. Удалите защищенную строку $ primaryKey = 'officeID' в вашей модели propoffice

  2. Сделайте поле целым, если вам нужно, чтобы это был первичный ключ.

  3. Выясните, как установить первичный ключ в качестве varchar. (плохая практика).

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