$ php artisan make:model Address -m
migration file
{
Schema::create('addresses', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned()->nullable();
$table->string('name');
$table->timestamps();
});
}
$ php artisan migrate
User.php
public function address(){
return $this->hasOne('App\Address');
}
//data挿入
mysql> use onetoone;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+——————–+
| Tables_in_onetoone |
+——————–+
| addresses |
| migrations |
| password_resets |
| users |
+——————–+
4 rows in set (0.00 sec)
mysql> insert into users (name, email, password) values (‘peter’, ‘peter@gmail’, ‘1234’);
Query OK, 1 row affected (0.00 sec)
Address.php
class Address extends Model
{
//
protected $fillable = [
'name'
];
}
route.php
Route::get('/insert', function(){
$user = User::findOrFail(1);
$address = New Address(['name'=>'1234 Huston av NY NY 11218']);
$user->address()->save($address);
});
mysql> select * from addresses;
+—-+———+—————————-+———————+———————+
| id | user_id | name | created_at | updated_at |
+—-+———+—————————-+———————+———————+
| 1 | 1 | 1234 Huston av NY NY 11218 | 2019-12-08 04:19:29 | 2019-12-08 04:19:29 |
+—-+———+—————————-+———————+———————+
1 row in set (0.00 sec)
$user->save();のところを、hasOneでは$user->address()->save($address);って書くんだ。I aint know what’s going on inside.
Route::get('/update', function(){
$address = Address::where('user_id', 1)->first();
$address->name = "4532 Updated new address";
$address->save();
});
mysql> select * from addresses;
+—-+———+—————————+———————+———————+
| id | user_id | name | created_at | updated_at |
+—-+———+—————————+———————+———————+
| 1 | 1 | 4532 Updated new address | 2019-12-08 04:19:29 | 2019-12-08 04:39:56 |
| 2 | 1 | 1234 Tokyo av NY NY 11218 | 2019-12-08 04:28:09 | 2019-12-08 04:28:09 |
+—-+———+—————————+———————+———————+
2 rows in set (0.00 sec)
updateは、対象のレコードを選択してsave();
read
Route::get('/read', function(){
$user = User::findOrFail(1);
return $user->address->name;
});
delete
Route::get('/delete', function(){
$user = User::findOrFail(1);
$user->address()->delete();
});