簡體   English   中英

類型轉換雄辯的關系 laravel

[英]Typecast eloquent relation laravel

我有兩個模型Tour.phpItinerary.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表由以下列組成:

身份證 |旅游身份證 | 日 | 細節

daydetail列是字符串類型。

我想按照天數的升序打印旅行的行程。

如何將字符串更改為整數?

我在視圖中使用 foreach 循環打印輸出:

@foreach($tour->itineraries as $item)
  {{$item->day}}
  {{$item->detail}}
@endforeach

我在模型中嘗試了 cast 方法:

    protected $casts = [
    'day' => 'integer',
    ];

和配件

public function castDayToInt($value)
{
    return (int)$value;
}

但沒有得到預期的結果。

上述代碼的當前輸出:

  • 第一天
  • 第 11 天
  • 第 12 天
  • ....
  • 第 2 天
  • 第 20 天
  • 第 21 天

預期輸出

  • 第一天
  • 第 2 天
  • 第 3 天
  • .....
  • 第 21 天

最好的解決方案是在 DB 中更改您的日期類型,

如果你仍然需要 varchar 類型,你可以這樣做:

public function itineraries()
{
    return $this->hasMany('App\Itinerary', 'tour_id')->orderByRaw('CONVERT(day, UNSIGNED) ASC');
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM