2016-12-15 2 views
0

私のデータベースには複数のレコードがありますが、テーブルには "平日"という名前のカラムがあり、 "mon"や "fri"のような曜日があります。フロントエンドからユーザーが検索を行うとき、サーバーにポストされたパラメーターはstartdayとendDayです。2つの平日の間にデータベースレコードを取得する

ここでstartDayとendDayの間のすべてのレコードを取得したいと考えています。 startDayは "mon"、endDayは "sun"とすることができます。私は現在、これを行う方法を知らない。

+2

使用番号の代わりに

DB::table('TableName')->whereIn('week_day', $daysRangeArray)->get();

希望の表に、このヘルプを照会することができ、この配列で

function getWeekDaysArray($startWeekDay, $endWeekDay) { returns $daysArray['mon','tue','wed']; } $daysRangeArray = getWeekDaysArray('mon', 'wed'); 

今範囲すなわちであなたに平日の配列を返すヘルパー関数を作ります"mon、tue ..."のように、あなたはちょうどレンジコールをしてそれらを得ることができます。月曜日と火曜日との間に1を入れ、月曜日と金曜日の間に行きたい場合は、平日が1以上5以下のコールをすることができます。あなたがそれらのデータを使用してデータを集計したい場合、非常に直感的ではありません – khuderm

+0

私は同意する、それははるかに簡単であるように思われる:D – user3718908

+0

答えを必要とするが、 – user3718908

答えて

0

日とその対応する番号の名前を持つ別のテーブルを作成します。それから、あなたの現在のテーブルを名前で日テーブルに結合し、そのテーブルの数字を使ってクエリを実行するだけです。

0

実用的ではありませんが、MySQLを使用して太陽、月、火を数字に変換することは可能です。

セットアップ201610のような静的な年と週数は、今年の10週間、その後、STR_TO_DATEとDATE_FORMATの組み合わせを使用します。

DATE_FORMAT(STR_TO_DATE('201610 mon', '%X%V %a'), '%w') 
DATE_FORMAT(STR_TO_DATE('201610 sun', '%X%V %a'), '%w') 
DATE_FORMAT(STR_TO_DATE('201610 tue', '%X%V %a'), '%w') 

これらの3文は、それぞれ0,1,2と評価されます。

私は格納および照会考えると、これはやっている主なものは、

-1

(0-6)%w形式に%aフォーマット(日-土)に変換しているだけでなく、私はあなたのアプリケーションのアーキテクチャを知りません1日の文字列は適切ではありませんが、私はこれを回避することができます。 あなたが

+0

これはコンパイルされません。 –

関連する問題