update table set field1 = field2 where id in (1,2,3,4,5,6,7,1000);
class Test implements CastsAttributes
{
/**
* Cast the given value.
*
* @param \Illuminate\Database\Eloquent\Model $model
* @param string $key
* @param mixed $value
* @param array $attributes
* @return mixed
*/
public function get($model, string $key, $value, array $attributes)
{
dump('U called get');
return $value;
}
/**
* Prepare the given value for storage.
*
* @param \Illuminate\Database\Eloquent\Model $model
* @param string $key
* @param mixed $value
* @param array $attributes
* @return mixed
*/
public function set($model, string $key, $value, array $attributes)
{
dump('U called set');
return mb_strtolower($value);
}
}
class User extends Authenticatable
{
.......
protected $casts = [
'email_verified_at' => 'datetime',
'name' => Test::class,
];
......
}
$user = User::first();
dump($user->name, $user->name, $user->name, $user->name, $user->name);
^ "U called get"
^ "U called get"
^ "U called get"
^ "U called get"
^ "U called get"
^ "vasya pupkin"
^ "vasya pupkin"
^ "vasya pupkin"
^ "vasya pupkin"
^ "vasya pupkin"
у вас срабатывает вот эта часть
если к типу boolean обратиться как к обьекту - то есть то что делаете вы true->rows - то вам php выдаст ровно ту ошибку что вы видите.