красноречивая модель с пустым значением первичного ключа - PullRequest
0 голосов
/ 01 октября 2018

Я использую Slim 3 с Eloquent в качестве ORM.У меня есть таблица товаров, которая содержит только 3 поля: productCode, name и price.У меня проблемы с получением атрибута моих продуктов.

Я создал класс модели для продуктов, это:

class Product extends Model
{
    protected $primaryKey = 'productCode';

    public $timestamps = false;

    protected $fillable = [
        'name',
        'price'
    ];
}

Esta la estoy utilizando desde mi controlador para enviarloscomo Json, de la siguiente forma:

class ProductsController extends Controller
{

    public function getAll($request, $response)
    {
        $products = Product::all();

        return $response->withJson($products, 200);
    }
}

Проблема в том, что он возвращает следующее:

[{"productCode":0,"name":"producto 1","price":15000},{"productCode":0,"name":"producto 2","price":20000},{"productCode":0,"name":"producto 3","price":5999}]

все переменные productCode изменяются вакуумом, поэтому json возвращает 0.

при просмотре переменной с помощью print_r () она правильно содержит productCode, но мне не удалось получить эти значения, она всегда возвращает пустое значение.

    Store\Models\Product Object
(
    [primaryKey:protected] => productCode
    [timestamps] => 
    [fillable:protected] => Array
        (
            [0] => name
            [1] => price
        )

    [connection:protected] => default
    [table:protected] => 
    [keyType:protected] => int
    [incrementing] => 1
    [with:protected] => Array
        (
        )

    [withCount:protected] => Array
        (
        )

    [perPage:protected] => 15
    [exists] => 1
    [wasRecentlyCreated] => 
    [attributes:protected] => Array
        (
            [productCode] => cod0001
            [name] => producto 1
            [price] => 15000
        )

    [original:protected] => Array
        (
            [productCode] => cod0001
            [name] => producto 1
            [price] => 15000
        )

    [changes:protected] => Array
        (
        )

    [casts:protected] => Array
        (
        )

    [dates:protected] => Array
        (
        )

    [dateFormat:protected] => 
    [appends:protected] => Array
        (
        )

    [dispatchesEvents:protected] => Array
        (
        )

    [observables:protected] => Array
        (
        )

    [relations:protected] => Array
        (
        )

    [touches:protected] => Array
        (
        )

    [hidden:protected] => Array
        (
        )

    [visible:protected] => Array
        (
        )

    [guarded:protected] => Array
        (
            [0] => *
        )

)

Как вы можете видеть, если переменная содержит правильный productCode, проблема в том, что они остаются пустыми, когда я пытаюсь их получить.

1 Ответ

0 голосов
/ 01 октября 2018

Вы должны сообщить Eloquent, что первичный ключ не имеет автоматического приращения:

class Product extends Model
{
    public $incrementing = false;
}
...