亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel model::create() 不返回主鍵

Laravel model::create() 不返回主鍵

PHP
夢里花落0921 2023-06-24 15:09:42
我有一個以下身份驗證表:<?phpuse Illuminate\Database\Migrations\Migration;use Illuminate\Database\Schema\Blueprint;use Illuminate\Support\Facades\DB;use Illuminate\Support\Facades\Schema;class CreateAuthTable extends Migration{    /**     * Run the migrations.     *     * @return void     */    public function up()    {        Schema::create('auth', function (Blueprint $table) {            $table->uuid('id')->primary();            $table->string('email', 255)->index()->unique();            $table->string('password', 96);            $table->timestamps();        });        DB::statement('ALTER TABLE auth ALTER COLUMN id SET DEFAULT uuid_generate_v4();');    }    /**     * Reverse the migrations.     *     * @return void     */    public function down()    {        Schema::dropIfExists('auth');    }}這是模型:<?phpnamespace App\Models;use Illuminate\Database\Eloquent\Model;use Illuminate\Foundation\Auth\User as Authenticable;use Illuminate\Support\Facades\Hash;use Laravel\Passport\HasApiTokens;class User extends Authenticable{    use HasApiTokens;    protected $table = "auth";    protected $fillable = ["email", "password"];    public $incrementing = false;    protected $keyType = 'string';    protected $casts = [        'id' => 'string'    ];    private $hashOptions = [        'memory' => 1024,        'time' => 2,        'threads' => 1    ];    public function setPasswordAttribute($value)    {        $this->attributes['password'] = Hash::make($value, $this->hashOptions);    }}
查看完整描述

1 回答

?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

只需確保強制轉換為字符串且主鍵名稱正確


namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model

{

  protected $casts = [

    'id' => 'string'

  ];

  protected $primaryKey = "id";

}

如果你將 $incrementing 設置為 false,它會破壞它并始終返回 false,因為它告訴代碼該 id 不是自動生成的,因此永遠不會被獲取。


class User extends Model

{

  public $incrementing = false;

  // ...

}


$user = new User;

$user->save();

dd($user->id);

// null

還要確保在遷移中啟用 uuid 擴展


<?php


class AddUuidExtensionToPostgre extends Migration

{


    public function up()

    {

        DB::statement('CREATE EXTENSION IF NOT EXISTS "uuid-ossp";');

    }


    public function down()

    {

        DB::statement('DROP EXTENSION IF EXISTS "uuid-ossp";');

    }

}

這是一個例子



Schema::create('users', function (Blueprint $table) {

    $table->uuid('id');

    $table->primary('id');

    // ...

});


DB::statement('ALTER TABLE users ALTER COLUMN id SET DEFAULT uuid_generate_v4();');


查看完整回答
反對 回復 2023-06-24
  • 1 回答
  • 0 關注
  • 149 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號