23
私はこの小さなクエリを自分のDB上で実行するようにしており、MySQL Workbenchでは正常に動作します。 基本的には、LEFT JOINのSELECTとLEFT JOINのUNIONを再度実行します。Laravel 5.1で生のクエリを実行する方法は?
SELECT
cards.id_card,
cards.hash_card,
cards.`table`,
users.name,
0 as total,
cards.card_status,
cards.created_at
FROM cards
LEFT JOIN users
ON users.id_user = cards.id_user
WHERE hash_card NOT IN (SELECT orders.hash_card FROM orders)
UNION
SELECT
cards.id_card,
orders.hash_card,
cards.`table`,
users.name,
sum(orders.quantity*orders.product_price) as total,
cards.card_status,
max(orders.created_at)
FROM menu.orders
LEFT JOIN cards
ON cards.hash_card = orders.hash_card
LEFT JOIN users
ON users.id_user = cards.id_user
GROUP BY hash_card
ORDER BY id_card ASC
InはLaravelに翻訳しようとしましたが、成功しませんでした。未定義のプロパティ: を照らし\データベース\雄弁\ビルダー:: $バインディング
どのようにできた
$cards = Card::selectRaw('cards.id_card, cards.hash_card ,cards.table, users.name, 0 as total, cards.card_status, cards.created_at as last_update')
->leftJoin('users','users.id_user','=','cards.id_user')
->whereNotIn('hash_card', Order::select('orders.hash_card')->get())
->union(
Order::selectRaw('cards.id_card, orders.hash_card, cards.table, users.name, sum(orders.quantity*orders.product_price) as total, cards.card_status, max(orders.created_at) as last_update')
->leftJoin('cards','cards.hash_card','=','orders.hash_card')
->leftJoin('users','users.id_user','=','cards.id_user')
)
->groupBy('hash_card')
->orderBy('cards.id_card','asc')
->get();
私はエラーに
ErrorException Builder.phpでライン1249を取得しています私はLaravelで完全に生のクエリを実行するか、Laravelで正しい方法でクエリを記述しますか?
をあなたが実際にも、巣にDB ::生のコールを必要としません。あなたは単にDB :: select( "...あなたのクエリ文字列...")を呼び出すことができます。 –
あなたは正しいです!私は巣DBを取り除きました:生とそれは魅力のように機能します! ;) –
私はもし可能ならば質問があります。 Laravel 5(正確には5.3)でクエリービルダー(DBなし)のRaw SQLクエリを使用していますか?SQLインジェクションを防止するには十分ですか?私はそれについていくつかの記事を見つけましたが、それはLaravel 4のためです。私は1つの確かな確認を見つけることができません。 – Robert