Поле id
Поле id является стандартным первичным ключом во всех таблицах Laravel. По умолчанию это автоматически инкрементируемое целое число, которое создается в миграции с помощью метода id. Eloquent автоматически использует это поле в качестве основного идентификатора для каждой модели. Если вы не укажете другое поле, Laravel будет считать, что первичный ключ называется id и имеет тип int с автоинкрементом.
Создание поля id в миграции
Для создания поля id в миграции используется метод id, который автоматически создает целочисленное поле с автоинкрементом и устанавливает его как первичный ключ:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::create('articles', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->timestamps();
});
}
public function down(): void
{
Schema::dropIfExists('articles');
}
};
?>
Работа с id в модели
Модель автоматически использует поле id как первичный ключ. После сохранения записи вы можете получить ее идентификатор:
<?php
namespace App\Http\Controllers;
use App\Models\Article;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
public function store(Request $request)
{
$article = new Article();
$article->title = 'Article title';
$article->content = 'Article content';
$article->save();
$res = $article->id;
echo $res;
}
}
?>
Результат выполнения кода:
"1"
Настройка первичного ключа
Если вы хотите использовать поле, отличное от id, или изменить его поведение, вы можете указать это в модели:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Article extends Model
{
protected $primaryKey = 'article_id';
public $incrementing = false;
protected $keyType = 'string';
}
?>
После настройки вы можете работать с кастомным первичным ключом:
<?php
namespace App\Http\Controllers;
use App\Models\Article;
class ArticleController extends Controller
{
public function show()
{
$article = Article::where('article_id', 'abc-123')->first();
if ($article) {
echo $article->article_id;
}
}
}
?>
Использование id в запросах
Поле id часто используется для поиска записей с помощью метода find:
<?php
namespace App\Http\Controllers;
use App\Models\Article;
class ArticleController extends Controller
{
public function show($id)
{
$article = Article::find($id);
if ($article) {
echo $article->title;
}
$article2 = Article::findOrFail(3);
echo $article2->title;
}
}
?>
Результат выполнения кода:
"Article title"
"Article title 3"
Получение последнего id
Вы можете получить идентификатор последней вставленной записи с помощью свойства id или метода insertGetId:
<?php
namespace App\Http\Controllers;
use App\Models\Article;
use Illuminate\Support\Facades\DB;
class ArticleController extends Controller
{
public function store()
{
$id = DB::table('articles')->insertGetId([
'title' => 'New article',
'content' => 'Content of new article'
]);
echo $id;
}
}
?>
Смотрите также
-
метод
string,
который создает строковое поле -
метод
foreignId,
который создает поле для внешнего ключа -
метод
unsignedBigInteger,
который создает большое беззнаковое целое -
метод
uuid,
который создает строковое поле для UUID