php - 类型转换雄辩的关系 laravel
问题描述
我有 2 个模型Tour.php
和Itinerary.php
一对多的关系:
旅游.php
public function itinerary()
{
return $this->hasMany('App\Itinerary', 'tour_id')->orderBy('day', 'asc');
}
行程.php
public function tour()
{
return $this->belongsTo('App\Tour', 'tour_id');
}
该itineraries
表由以下列组成:
id |tour_id | 天 | 细节
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 天
解决方案
最好的解决方案是在 DB 中更改您的日期类型,
如果你仍然需要 varchar 类型,你可以这样做:
public function itineraries()
{
return $this->hasMany('App\Itinerary', 'tour_id')->orderByRaw('CONVERT(day, UNSIGNED) ASC');
}
推荐阅读
- angular - 如何使用字符串引用 ng-template?
- javascript - TABULATOR - Mutator 不显示数据
- reactjs - Auth0 as SP:React 应用程序接收 SAML 响应,而不是带有代码和状态参数的重定向
- wordpress - 使用 Route 53 的 ELB 上的意外行为
- python - 将一个范围内的所有 x 值分箱然后取每个箱中所有 y 值的平均值的最佳方法?
- javascript - 使用jQuery滑块通过串行发送数据
- pandas - Pandas 数据框操作逻辑
- string - 如何将 QStringView 与 QML 一起使用?
- windows - 无法在模拟器上调试 UWP 应用:无法获取前台
- excel - 为什么Excel中命名范围的行不是整数