コンフィはオリーブオイルで低温調理した料理全般を言うみたいです。
味はちょっと薄かったです。
もっと塩を使うか、お肉を細かく切った方が良いかもしれないでです。
あと、どのように映っているか、調理中でも確認できるビデオカメラがあればいいですね。
カメラ、高いんだよなぁ・・・
バナークリックで応援よろしくお願いします。
前回までの状況はこちら。
最新ソースはこちら。
https://github.com/takishita2nd/hotel-mng
バリデーション処理とは、フォームで入力した値が、正しいかどうかを確認する処理です。
現在は入力された値がそのままデータベースに入るようになってしまっているので、パラメータチェック処理を入れて、エラーを返せるようにします。
今回は実装量が少ない方法で行きます。
以下のコマンドを入力。
$ php artisan make:request ManagementRequest
そうすると、App/Http/Request/ManagementRequest.phpが作成されます。
その内容を修正します。
class ManagementRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required|string',
'address' => 'required|string',
'phone' => 'required|digits:11',
'num' => 'required|numeric|digits_between:1,2',
'days' => 'required|numeric|digits_between:1,4',
'start_day' => 'required|date',
];
}
}
authorize()の戻り値はtrueに変えます。
falseのままだとすべて認証エラーとなります。
rules()に各パラメータの確認内容を記入します。
こちらのサイトが参考になります。
https://qiita.com/fagai/items/9904409d3703ef6f79a2
あとは、コントローラーを変更します。
use App\Http\Requests\ManagementRequest;
/**
* 登録処理
*/
public function store(ManagementRequest $request)
/**
* 更新処理
*/
public function update(ManagementRequest $request)
確認を行うフォームのリスエスト処理の引数の型をManagementRequestに変更します。
これで、App/Http/Request/ManagementRequest.phpの内容が適用されます。
あとは、bladeにエラーを表示する領域を追加すればOK。
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif

クリックで応援よろしくお願いします。
LG G8X ThinQはLGからリリース予定の2画面スマホです。
キャリアはソフトバンクのみ。
通常は1画面ですが、アタッチメントでもう1画面増やすことができます。
この画面は製品に付属されています。
この2画面は、それぞれ独立しているため、二つのアプリを同時に扱えるというメリットがあります。
使い方次第では便利なのかもーと思います。
しかも価格も抑えめ。
スペックの比較です。
比較するのはPixel4です。
| Pixel4 | Pixel4 XL | LG G8X ThinQ | |
| ディスプレイ | 5.7インチ | 6.3インチ | 6.4インチ、6.4インチ |
| 解像度 | FHD+ 19:9 | QHD+ 19:9 | FHD+ 2340×1080ドット |
| プロセッサ | Snapdragon855 | Snapdragon855 | SDM855 |
| メモリ | 6GB | 6GB | 6GB |
| ストレージ | 64GB/128GB | 64GB/128GB | 64GB |
| サイズ | 147×68.8×8.2mm | 160.4×75.1×8.2mm | 160×76×8.4mm 2画面では 166×164×15.0mm |
| 重さ | 162g | 193g | 193g 2画面では 331g |
また、おサイフケータイ、指紋認証、ワンセグ、フルセグが付いています。本体のみ防水・防塵仕様になっています。
お値段、合計55440円。
このスペックで5万円台か。どこかでコスト削っているのか?
そうだな・・・2画面あるのだから、テレビみながらツイッターできる、と言うことができるのか。
それはそれで便利かも。
別に今のPixel3に不満は無いけどね。
バナークリックで応援よろしくお願いします。
前回までの様子はこちら。
最新ソースはこちら。
https://github.com/takishita2nd/hotel-mng
まあ、ここまで見ていただいた方々は、ほぼ100%思っていることがあると思います。

見づらい。
せめて、罫線ぐらい引けよ。
ということで、やります。
Laravelでは、public/css/app.cssを読み込んで、スタイルを設定しています。
じゃあ、ここにスタイルを書き足せばいいのか?と思うかもしれませんが、Laravelでは、もっと便利な方法があるんです。
sass/scssというんですけどね。
こちらにスタイルを書き込み、node.jsのプログラムを実行して、app.cssを作成することができるんです。
sass/scssは普通にCSSを書くよりも、少ないコードでスタイルをかけるので便利でした。
まずは、node.jsの準備。
$ sudo apt install nodejs $ sudo apt install npm $ npm install $ npm run dev
もし、npm installに失敗した場合は、imagemin-pngquantのバージョンが一致していないので、package.jsonのdevDependenciesに以下を書き足します。
"imagemin-pngquant": "5.0.1"
npm installが完了すれば、準備完了。
npm run devを実行すると、sass/scssのコンパイルが実行されます。
スタイルは何度も書き換えることが多いので、コンパイルが面倒くさい人は、
$ npm run watch
を入力すると、sass/scssを保存するたびに、それを検出してコンパイルしてくれます。
では、sass/scssを作成します。
resource/assets/sassの下に、_Management.scssを作成し、app.scssに以下を追加します。
@import "Management";
そして、_Management.scssに記述を追加。
table.management {
width: 100%;
tbody tr{
th {
border: solid;
border-width: thin;
}
.name{
width: 15%;
}
.address{
width: 20%;
}
.phone{
width: 15%;
}
.num{
width: 10%;
}
.date{
width: 10%;
}
.command{
width: 5%;
}
td {
border: solid;
border-width: thin;
}
.name{
width: 15%;
}
.address{
width: 20%;
}
.phone{
width: 15%;
}
.num{
width: 10%;
}
.date{
width: 10%;
}
.command{
width: 5%;
}
}
}
bladeにスタイルを適用します。
<table class="management">
<tr>
<th class="name">名前</th>
<th class="address">住所</th>
<th class="phone">電話番号</th>
<th class="num">人数</th>
<th class="date">宿泊日</th>
<th class="num">宿泊日数</th>
<th class="command">編集</th>
<th class="command">削除</th>
</tr>
@foreach ($registerLists as $list)
<tr>
<td class="name">{{ $list->name }}</td>
<td class="address">{{ $list->address }}</td>
<td class="phone">{{ $list->phone }}</td>
<td class="num">{{ $list->num }}</td>
<td class="date">{{ $list->start_day }}</td>
<td class="num">{{ $list->days }}</td>
<td class="command">{{ Html::link('/management/'.$list->id.'/edit', '編集') }}</td>
<td class="command">{{ Html::link('/management/'.$list->id.'/conform', '削除') }}</td>
</tr>
@endforeach
</table>

これで見た目がだいぶ良くなりました。
バナークリックで応援よろしくお願いします。
前回までの様子はこちら
最新ソースはこちら
https://github.com/takishita2nd/hotel-mng
今回はスケジュール一覧を表示させたいと思います。
まずはルーティング。
Route::get('/management/schedule', 'RegisterManagementController@schedule');
コントローラー。
/**
* スケジュール表示
*/
public function schedule()
{
return view('register.schedule', ['Lists' => $this->registerManagement->getSchedule()]);
}
リポジトリ。
予約名はテーブルが違うので、リレーションを使って参照します。
リレーション便利。
/**
* スケジュール一覧を取得する
*/
public function getSchedule()
{
$lists = array();
$index = 0;
$models = ReserveDayList::get();
foreach($models as $model)
{
$lists[$index] = array('day' => $model->day, 'name' => $model->reserveManagements()->first()->name);
$index++;
}
return $lists;
}
ビュー。
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-heading">スケジュール</div>
<div class="panel-body">
<table>
<tr>
<th>日時</th>
<th>名前</th>
</tr>
@foreach ($Lists as $list)
<tr>
<td>{{ $list['day'] }}</td>
<td>{{ $list['name'] }}</td>
</tr>
@endforeach
</table>
</div>
</div>
</div>
</div>
</div>
@endsection

今回はいろいろ手こずった割には、コード自体はあっさりしたという。
ビュー側がオブジェクトじゃなくて、連想配列だったのが落とし穴だったわ。
でも、システムとしてはまだまだ足りないところがあるので、そこを対応していきます。
ここでまず必要なのは、サトウキビ。
これは紙の材料となり、地図を作成するのに必要になります。
サトウキビは水の周りにしか生えないので、川をくまなく歩いて、ようやく発見することができました。
サトウキビを拠点に持ち帰り、近くの水辺に植えておきました。
成長すれば収穫できるはずです。
次は、鉄が欲しいので、近くの洞窟を探検することにしました。
なんと、そこには廃坑があったのです!
これはラッキー。
廃坑は資材の宝庫!
でも、まだ深く探索するのは危険なので、鉄だけ回収して帰りました。
いずれ、きちんと探索します。
鉄を使ってはさみを作成。
はさみがあれば、蜘蛛の巣を回収できます。
蜘蛛の糸があれば糸を取り出すこともできますので、とりあえず、廃坑探検はここまで。
拠点を整備したい。
↑よかったらクリックお願いします。
完全栄養食はこちらの記事でまとめています。
完全栄養食をもっとおいしく食べたい。
前回食べてみたときは、スープではなくて、ソースと合わせたほうがおいしい、というのが分かったので、
ならば、市販のパスタソースでも十分おいしく食べられると思ったのです。
というわけで、購入しました。




いずれも、ヌードル本体の味にも負けず、しっかりソースの味も感じられました。
三つともとてもおいしかったです。
これをうまく組み合わせれば、おいしくBASE NOODLEを食べられますね。
しかも、糖質は少ないので、小腹がすいた夜に食べても罪悪感ないし、腹持ちもいい。
ほんと、これはお勧め。
前回、退職して確定申告を行ったときは、確か、Web上で必要事項を入力すれば、自動的に計算してくれて、印刷して税務署にもっていけばOKだったのですが。
まぁ、税務署は家からも近いのですが、それでも、寒い中、外出はなるべく控えたい。
なので、自宅で全部完結するe-Taxというものをやってみようと思ったのです。

基本的には何でもいいのですが、e-Tax対応と商品説明にあるものを選んだほうが確実です。

もはやこれぐらいしかマイナンバーカードのメリットがないのでは?と言われているものです。
様々な活用法を模索しているみたいですけどね。
こちらのサイトにアクセスし、手続きを行います。

まぁ、Windows10を指定している人だったら、「利用環境の確認」はクリアしていると思います。
「電子証明書の取得」に関しては、マイナンバーカードがそれに該当しますので、持っていればクリア。
なので、次は「開始届出書の提出になります。
こちらのリンクから、
http://www.e-tax.nta.go.jp/e-taxsoftweb/e-taxsoftweb1.htm#Link4

このプログラムをダウンロードして、インストール。
注意するべきところは、

この画面で、Microsoft Storeからプラグインをインストールすること。

あとは、指示に従って進めていくだけ。
完了後にEdgeを確認すると、

こんなのが出るので、有効化します。
たぶん、この画面が表示されるので、

右の「初めての~」をクリックして、必要事項を入力します。
無事、手続き完了すれば、利用者識別番号が発行されます。
この画面は必ず印刷するか、PCに保存してください。
というのは、まだ今年度の確定申告の受付は始まっておりません。
でも、準備は早いに越したことはないので、
マイナンバーカードの申請は今からならばぎりぎり間に合うかもしれないので、e-Taxやってみたいという人は、早めに準備しておくことをお勧めします。
↑よろしかったらクリックをお願いします。
前回までの様子はこちら。
最新ソースコードはこちら。
https://github.com/takishita2nd/hotel-mng
まずは、テーブルの連携が正しくできるように、マイグレーションを修正しました。
実際に修正を行う際には、事前にロールバックを行うか、テーブルを書き換えるマイグレーションファイルを追加してください。
Schema::create('reserve_day_list_reserve_management', function (Blueprint $table) {
$table->increments('id');
$table->integer('reserve_management_id')
->foreign('reserve_management_id')
->references('id')->on('reserve_managements')
->onDelete('cascade');
$table->integer('reserve_day_list_id')
->foreign('reserve_day_list_id')
->references('id')->on('reserve_day_lists')
->onDelete('cascade');
$table->timestamps();
$table->engine = 'InnoDB';
$table->charset = 'utf8mb4';
$table->collation = 'utf8mb4_unicode_ci';
});
Laravelには、中間テーブルのネーミングルールが決まっており、それに合わないと、正しく中間テーブルを認識できません。
しかし、ネーミングルールがあっていれば、中間テーブルのモデルを定義しなくても、Laravelは中間テーブルを認識します。
各モデルの関数も修正します。
class ReserveManagement extends Model
{
protected $table = 'reserve_managements';
public function reserveDayLists()
{
return $this->belongsToMany('App\Model\ReserveDayList');
}
}
class ReserveDayList extends Model
{
protected $table = 'reserve_day_lists';
public function reserveManagements()
{
return $this->belongsToMany('App\Model\ReserveManagement');
}
}
これで、各モデルから連携先のモデルを直接参照することができます。
最後にリポジトリの修正を行います。
public function add($param)
{
$model = new ReserveManagement;
foreach($this->paramNames as $name)
{
$model->$name = $param[$name];
}
$model->save();
$model2 = new ReserveDayList();
$model2->day = $model->start_day;
$model2->save();
$model->reserveDayLists()->attach($model2);
for($i = 1; $i < $model->days; $i++)
{
$model2 = new ReserveDayList();
$model2->day = date('Y-m-d', strtotime($model->start_day.'+'.$i.' day'));
$model2->save();
$model->reserveDayLists()->attach($model2);
}
}
ちょっと変数名がよろしくありませんが、attach関数でLaravelは自身で中間テーブルを認識し、レコードの紐付けを行います。
逆に削除する場合は、
public function deleteById($id)
{
$model = $this->getItemById($id);
$model2s = $model->reserveDayLists()->get();
$model->reserveDayLists()->detach();
foreach($model2s as $model2)
{
$model2->delete();
}
$model->delete();
}
今度は逆にdetach関数で紐付けを解除します。
少し修正が発生しましたが、これで少ないコードでデータベースを簡単に扱うことができます。
↑よかったらクリックお願いします。