学んだこと
- モデルの日時プロパティを設定時は自動で変換してくれるようにし、取得時は PHP の Carbon で扱えるようにする設定
コード
app/Models/Wp/Post.php
/**
* 日付を変形する属性
*
* @var array
*/
protected $dates = [
'post_date',
];
resources/views/admin/posts/index.blade.php
$ git diff resources/views/admin/posts/index.blade.php
diff --git a/resources/views/admin/posts/index.blade.php b/resources/views/admin/posts/index.blade.php
index bfbf29f..dd7ae4a 100644
--- a/resources/views/admin/posts/index.blade.php
+++ b/resources/views/admin/posts/index.blade.php
@@ -31,7 +31,7 @@
<td>{{ $post->categories->implode('name', ', ') }}</td>
<td>{{ $post->postTags->implode('name', ', ') }}</td>
<td>{{ $post->comment_count }}</td>
- <td>{{ $post->post_date }}</td>
+ <td>{{ $post->post_date->format('Y年m月d日') }}</td>
</tr>
@endforeach
</tbody>
$
モデルで $date プロパティを定義ない場合、ビューでの format メソッドは、 string に対してのメソッドとなり、そんなメソッドは存在しないため、エラーとなります。
気になったこと
属性キャスト と 日付ミューテタ の使い分けがよくわかりません。
- 属性キャスト
- 属性キャストはデータベースから取り出した値をキャストするもので、例えばデータベースに保存するためにモデルにセットした値をキャストするものではない?
- 属性キャストは、 PHP ネイティブな型へキャストする?
- 日付ミューテタ
- 日付ミューテタはデータベースから取り出した値をキャストし、また、例えばデータベースに保存するためにモデルにセットした値もキャストする。
- 日付ミューテタは Carbon オブジェクトへとキャストする。
おわりに
知っていたことをメモにするだけ、と思っていましたけれども、今回は検証しませんでしたけれども、気になったことも出てきました。
以上です。