【发布时间】:2019-12-20 12:12:27
【问题描述】:
我有 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 表由以下列组成:
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 天
【问题讨论】:
-
我不确定我是否关注这个问题。当你做什么时,你期望在哪里得到什么结果?你目前得到什么结果?看起来你只是在呼应这个价值?当它被回显时,无论如何它只是网站上的文本。 HTML 没有任何“数据类型”的概念
-
我发现你的hasMany方法不是复数,但是你用复数来称呼它
-
@MagnusEriksson 我得到了这种格式的行程
1101112..2``20``22我期待这种格式的输出。123..22 -
所以真正的问题是关于数字的顺序?
day值如何存储在数据库中?作为 int 还是作为 varchar?由于在返回数据之前在数据库中进行了排序/排序,因此在 Laravel after 结果来自 db(已经排序) 中转换字符串和 int 并不重要跨度> -
它是数据库中的 varchar。我想知道为什么 cast & accessor 不起作用
标签: php laravel eloquent laravel-6