質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

7731閲覧

laravel joinの条件に数値を入力したら列名として扱われてしまいます。

cofee

総合スコア44

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/05/11 08:39

タイトルの通りなのですが、クエリビルダでjoinの条件に数字を書くと列名ではありませんとエラーが出てしまいます。
以下のようなクエリの場合、「>join('M_sampleB as b','b.code','>=',1000)」ここでエラーになってしまいます。
エラーになったクエリをsqlserverで試すと[1000]となり、こちらでも列名ではありませんとなりました。

laravel クエリビルダ などで調べても出てこなかったので質問させていただきます。
よろしくお願いいたします。

php

1$first = DB::table('M_sampleA as a') 2 ->join('M_sampleC as c','a.num','=','o.num') 3 ->where('a.code','<>',0); 4 5 $results = DB::table('M_sampleA as a') 6 ->join('M_sampleB as b','b.code','>=',1000) 7 ->join('M_sampleC as c','a.num','=','c.num') 8 ->where('a.code','=',0) 9 ->union($first) 10 ->get(); 11

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

joinメソッドの第2引数以降は、JOIN時のカラムの制約条件を指定するためにあります。
b.code >= 1000等の条件はwhereメソッドで指定する必要があると思います。

WHERE
JOIN

投稿2018/05/11 10:06

編集2018/05/11 10:07
Lulucom

総合スコア1899

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cofee

2018/05/13 10:17

回答ありがとうございます。 無事解決いたしました。
guest

0

ベストアンサー

1000を'1000'としてもダメなのかなぁ?

DB::table('users') ->join('contacts', function ($join) { $join->on('users.id', '=', 'contacts.user_id') ->where('contacts.user_id', '>', 5); }) ->get();

みたいにクロージャを使ってはどうでしょう?
where()で数値との比較ができそうですし。

投稿2018/05/11 09:37

編集2018/05/11 10:28
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cofee

2018/05/11 09:54

回答ありがとうございます。 '1000'としても変わりませんでした。
cofee

2018/05/13 10:15

クロージャを使うことでできました! ありがとうございます。
guest

0

aに対してbをjoinする条件にbとaの関連性を付加しなくて大丈夫でしょうか?

マニュアルの「Advanced Join Clauses」あたりを参考にしてください

投稿2018/05/11 08:50

yambejp

総合スコア114572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cofee

2018/05/11 09:16

回答ありがとうございます! 質問のソースはけっこう変更してしまっているのでおかしいかもしれません。 ただ今回は、1000が[1000]になってしまう原因が分からず質問させていただきました。。
yambejp

2018/05/11 10:06

joinの書式が join(追加テーブル,リレーション用のカラム,条件演算子,もう一方のテーブルのリレーション用のカラム) だからじゃないんですか?
cofee

2018/05/13 10:16

m6uさんの回答を参考にしたらできました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問