1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

EloquentでCRUDしよう

Posted at

Eloquentって?

Laravelに含まれている美しくシンプルなアクティブレコードによるデーター操作の実装です。

と書いてありますが、言ってしまえばデータベースのテーブルの内容をModelとして扱える便利な機能です。

使い方

モデルを作る

ここではlaravelの公式を参照してみましょう.

php artisan make:model Flight

このコマンドでFlightモデルを作ることができます。

Flight.php
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Flight extends Model
{
    //
}

こんな感じのファイルが生成されます。ここでnamespaceは名前空間というもので、今後このFlightモデルを使うときは

App\Flight

で使うことができるようになります。

現在のままでは単に空のモデルを作っただけです。そこでflightsテーブルの内容を紐付けてみます。
flightテーブルには

  • id
  • datetime
  • name
  • company
  • from
  • to

というカラムが存在するとします。
飛行機の便みたいなものを想像してください。

紐付けましょう。こうなります。

Flight.php
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Flight extends Model
{
    /**
     * モデルと関連しているテーブル
     *
     * @var string
     */
    protected $table = 'flights';
}

これで完了です。

Create

それではテーブルにデータを挿入してみましょう。ここでidは主キーかつauto_incrementとします。

$obj = new App\Flight;
$obj->datatime = '2019-01-01';
$obj->name = 'NH01';
$obj->company = 'ANA';
$obj->from = 'NRT';
$obj->to = 'JFK';
$obj->save();

これで以下のようなデータが挿入されます。

id datatime name company from to
1 2019-01-01 NH01 ANA NRT JFK

Read

次にテーブルからデータを取得しましょう。
ここでは以下のようなテーブルを想定します。

id datatime name company from to
1 2019-01-01 NH01 ANA NRT JFK
2 2019-01-02 JL01 JAL HND LHR

例えばID=2のものを取得したいときは以下のように書きます。

$obj = App\Flight::where('id',2);

たったこれだけです。
このあと、例えば

echo $obj->name; //「JL01」と出力される

のように利用すればOKです。

さらに

$flights = App\Flight:all();
foreach($flights as $flight) {
    echo $flight->company."\n"; //ANA JALと出力される
}

みたいなことも可能です。

Update

続いてアップデートしてみましょう。

id datatime name company from to
1 2019-01-01 NH01 ANA NRT JFK
2 2019-01-02 JL01 JAL HND LHR
例えばid=1のtoを変えたい、ときは以下のようにします。
$obj = App\Flight:where('id', 1);
$obj->to = 'DWC';
$obj->save();

するとテーブルは以下のようになります。

id datatime name company from to
1 2019-01-01 NH01 ANA NRT JFK
2 2019-01-02 JL01 JAL HND DWC

簡単ですね。Createのnewがないだけです。

Delete

最後に消しましょう。
ここではdatetime >= 2019-01-01を削除します。

$obj = App\Flight::where('datetime','>=', '2019-01-01');
$obj = delete();

こうすることで

id datatime name company from to

となります。where句をこのように使うこともできるわけですね。
他にも

$obj = App\Flight::find(1);
$obj = delete();

とすることで

id datatime name company from to
2 2019-01-02 JL01 JAL HND DWC

となります。主キーの場合find句を使えばwhere句よりも楽です。

終わりに

Eloquentはとても便利なものです。ここに書いてあることはあくまで触りです。
詳しくは
Laravel 5.7 Eloquent:利用の開始
Eloquent をおさらい
を御覧ください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?