LaravelのEloquentをUnitTestするときに、日付の属性をセットしようとすると下記のエラーになった。
Call to a member function connection() on null
at vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:1342
1338| * @return \Illuminate\Database\Connection
1339| */
1340| public static function resolveConnection($connection = null)
1341| {
> 1342| return static::$resolver->connection($connection);
1343| }
データベースのコネクションを探しているようや。これは、日付の属性をセットするときは、データベースへのアクセスが必要になるためらしいんやが…。
/**
* Get the format for database stored dates.
*
* @return string
*/
public function getDateFormat()
{
return $this->dateFormat ?: $this->getConnection()->getQueryGrammar()->getDateFormat();
}
なるほど、日付のフォーマットをデータベースタイプから参照してくれる機能のおかげみたいや。
/**
* Set the date format used by the model.
*
* @param string $format
* @return $this
*/
public function setDateFormat($format)
{
$this->dateFormat = $format;
return $this;
}
フォーマットは直接指定できるようなので、Eloquentで指定しておけばええみたいや。
これで、データベースのコネクションエラーにならずにEloquentの日付属性を利用するようなUnitTestも動くようになったで。