📅  最后修改于: 2023-12-03 15:17:15.605000             🧑  作者: Mango
在 Laravel 中,我们通常使用整数作为模型的主键,例如自增长的 id
,但是在某些情况下,我们需要使用字符串作为主键。本文介绍如何在 Laravel 中使用字符串作为模型的主键。
我们可以通过 $primaryKey
属性来指定模型的主键,将其设为字符串类型即可。
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class MyModel extends Model
{
protected $primaryKey = 'my_string_key';
}
接下来,在数据迁移中需要创建主键为字符串类型的数据表,我们需要使用 $table->string()
方法来实现。
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateMyModelsTable extends Migration
{
public function up()
{
Schema::create('my_models', function (Blueprint $table) {
$table->string('my_string_key')->primary();
$table->string('my_other_field');
// ...
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('my_models');
}
}
现在我们可以使用我们新创建的 MyModel
模型了。在模型中,我们可以像使用整数主键那样使用字符串主键。
$myModel = MyModel::find('my_key_value');
在 Laravel 中使用字符串作为模型的主键非常简单,只需要将 $primaryKey
属性设置为字符串类型,同时在数据迁移中使用 $table->string()
方法创建数据表即可。