Laravel 5.8 Eloquent Create () возвращает неправильный идентификатор - PullRequest
0 голосов
/ 08 февраля 2020
public function up() {
        Schema::create( 'active_stocks', function ( Blueprint $table ) {
            $table->bigIncrements( 'id' );
            $table->string( 'sku' );
            $table->text( 'title' )->nullable()->default( '' );
            $table->integer( 'cost' )->default(0);
            $table->integer( 'qty' )->default(0);
            $table->string( 'stock_tracking' )->default('')->nullable();
            $table->integer( 'type' )->default(1);
            $table->text( 'image' )->nullable();
            $table->integer( 'user_id' );
            $table->integer( 'status' )->default(1);
            $table->timestamps();
        } );
        \Illuminate\Support\Facades\DB::statement( "ALTER TABLE `active_stocks` AUTO_INCREMENT = 9999999999;" );
    }

Я установил автоинкремент как некоторое значение, которое я хотел в разработке. Затем я создаю новую запись, используя Laravel Eloquent

$create = App/ActiveStock::create(
 [
    'sku'            => $item_array['sku'],
    'qty'            => $item_array['qty'],
    'stock_tracking' => $item_array['tracking'],
    'type'           => ActiveStock::TYPE_IMPORTED,
    'cost'           => $item_array['cost'],
    'user_id'        => $user_id,
 ]
)

echo $create->id; //Should be 9999999999

, но я получил это 2147483647 Но я посмотрел на базу данных, значение идентификатора 9999999999, что верно.

Что я здесь отсутствует.

это полный ответ $ create

App\ActiveStock Object
(
    [fillable:protected] => Array
        (
            [0] => sku
            [1] => title
            [2] => cost
            [3] => qty
            [4] => stock_tracking
            [5] => type
            [6] => image
            [7] => user_id
            [8] => status
        )

    [connection:protected] => mysql
    [table:protected] => active_stocks
    [primaryKey:protected] => id
    [keyType:protected] => int
    [incrementing] => 1
    [with:protected] => Array
        (
        )

    [withCount:protected] => Array
        (
        )

    [perPage:protected] => 15
    [exists] => 1
    [wasRecentlyCreated] => 1
    [attributes:protected] => Array
        (
            [sku] => test-B00MSOIUOO
            [qty] => 11
            [stock_tracking] => 
            [type] => 1
            [cost] => 112
            [user_id] => 1
            [updated_at] => 2020-02-08 17:12:38
            [created_at] => 2020-02-08 17:12:38
            [id] => 2147483647
        )

    [original:protected] => Array
        (
            [sku] => test-B00MSOIUOO
            [qty] => 11
            [stock_tracking] => 
            [type] => 1
            [cost] => 112
            [user_id] => 1
            [updated_at] => 2020-02-08 17:12:38
            [created_at] => 2020-02-08 17:12:38
            [id] => 2147483647
        )

    [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
        (
        )

    [timestamps] => 1
    [hidden:protected] => Array
        (
        )

    [visible:protected] => Array
        (
        )

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

)

Ответы [ 2 ]

2 голосов
/ 08 февраля 2020

2147483647 - максимальное значение 32-разрядных целых чисел со знаком. Вы, вероятно, используете 32-битную версию PHP.

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

Число, к которому вы обращаетесь, слишком велико. 2147483647 - максимальный предел для 32-bit int.
Если вы хотите хранить и работать с числом больше этого, вы можете изменить тип столбца с int на что-то вроде varchar(100).

...