类型转换 eloquent 关系 laravel
Typecast eloquent relation laravel
我有 2 个模型 Tour.php
和 Itinerary.php
一对多关系:
Tour.php
public function itinerary()
{
return $this->hasMany('App\Itinerary', 'tour_id')->orderBy('day', 'asc');
}
Itinerary.php
public function tour()
{
return $this->belongsTo('App\Tour', 'tour_id');
}
itineraries
table由以下列组成:
id |tour_id | day | detail
day
& detail
列是字符串类型。
我想按天数升序打印旅游行程。
如何将字符串更改为整数?
我在视图中使用 foreach 循环打印输出:
@foreach($tour->itineraries as $item)
{{$item->day}}
{{$item->detail}}
@endforeach
我试过模型中的 cast 方法:
protected $casts = [
'day' => 'integer',
];
和存取器
public function castDayToInt($value)
{
return (int)$value;
}
但没有得到预期的结果。
以上代码的当前输出:
- 第 1 天
- 第 11 天
- 第 12 天
- .....
- 第 2 天
- 第 20 天
- 第 21 天
预期输出
- 第 1 天
- 第 2 天
- 第 3 天
- .......
- 第 21 天
最好的解决方案是更改数据库中的日期类型,
如果还需要varchar类型,可以这样:
public function itineraries()
{
return $this->hasMany('App\Itinerary', 'tour_id')->orderByRaw('CONVERT(day, UNSIGNED) ASC');
}
我有 2 个模型 Tour.php
和 Itinerary.php
一对多关系:
Tour.php
public function itinerary()
{
return $this->hasMany('App\Itinerary', 'tour_id')->orderBy('day', 'asc');
}
Itinerary.php
public function tour()
{
return $this->belongsTo('App\Tour', 'tour_id');
}
itineraries
table由以下列组成:
id |tour_id | day | detail
day
& detail
列是字符串类型。
我想按天数升序打印旅游行程。
如何将字符串更改为整数?
我在视图中使用 foreach 循环打印输出:
@foreach($tour->itineraries as $item)
{{$item->day}}
{{$item->detail}}
@endforeach
我试过模型中的 cast 方法:
protected $casts = [
'day' => 'integer',
];
和存取器
public function castDayToInt($value)
{
return (int)$value;
}
但没有得到预期的结果。
以上代码的当前输出:
- 第 1 天
- 第 11 天
- 第 12 天
- .....
- 第 2 天
- 第 20 天
- 第 21 天
预期输出
- 第 1 天
- 第 2 天
- 第 3 天
- .......
- 第 21 天
最好的解决方案是更改数据库中的日期类型,
如果还需要varchar类型,可以这样:
public function itineraries()
{
return $this->hasMany('App\Itinerary', 'tour_id')->orderByRaw('CONVERT(day, UNSIGNED) ASC');
}