当前位置: 首页 > 知识库问答 >
问题:

如何使用Laravel 5.1执行原始查询?

洪宏硕
2023-03-14

因此,我在数据库上运行了这个小查询,它在MySQL工作台上运行良好。基本上,使用左连接进行选择,然后再次使用左连接进行并集。

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

年,他试图把它翻译成拉威尔,但没有成功。

$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();

我发现了错误

生成器中的错误异常。php第1249行:未定义的属性:Illumb\Database\Eloquent\Builder::$bindings

我如何在Laravel中执行一个完全原始的查询,或者如何在Laravel中以正确的方式编写查询?

共有3个答案

范翰池
2023-03-14

您也可以这样运行原始查询。

DB::table('setting_colleges')->first();
简成仁
2023-03-14
    DB::statement("your query")

我用它在迁移中向列添加索引

阙奇思
2023-03-14

我在这个主题中找到了解决方案,并编写了以下代码:

$cards = DB::select("SELECT
        cards.id_card,
        cards.hash_card,
        cards.`table`,
        users.name,
        0 as total,
        cards.card_status,
        cards.created_at as last_update
    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) last_update 
    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");
 类似资料:
  • 问题内容: 因此,我有一个很小的查询可以在我的数据库上运行,并且在MySQL Workbench中可以正常工作。基本上,再次使用带有左联接的SELECT和带有左联接的UNION。 在尝试将其翻译为Laravel时没有成功。 我遇到了错误 Builder.php 1249行中的ErrorException:未定义的属性:Illuminate \ Database \ Eloquent \ Build

  • 问题内容: 我正在使用带有实体框架5的asp.net mvc3。我有.edmx文件,并能够使用linq或SP与数据库交互,但是我想运行一些原始sql语句。我正在尝试这样的事情: 是否有可能以这种方式执行sql查询?谢谢。 问题答案: 您可以执行以下类型的查询: 对实体类型的SQL查询,该查询返回特定类型的实体。 { } 非实体类型的SQL查询,该查询返回原始数据类型。 { var studentN

  • 这是正在执行查询的函数: 运行此函数时,出现以下异常: SQLSTATE[HY093]:无效的参数编号:未定义参数(SQL:选择名称、总体、圆((ST_Distance(rpoint,'POINT(24.8 43.3648))):数字,1)作为距离,圆(度(ST_Axitation(rpoint,'POINT(24.8 43.3648)):数字,1)作为来自ST_DWithin(rpoint,'P

  • 问题内容: 我正在尝试使用原始sqlalchemy查询将值插入Postgres11数据库。通过psql- client运行以下SQL查询时,它可以正常运行: 所有行均正确插入: 但是,如果我在sqlalchemy中创建一个引擎,并使用相同的查询在其上调用execute,它会成功运行,但不会插入任何行: 但是没有插入新行: 通过psql-client运行查询与通过sqlalchemy执行查询有何不同

  • 问题内容: 如何通过带有Strongloop的REST API执行原始查询并公开结果? 我已经阅读了有关使用的内容,但是找不到任何有效的示例。 问题答案: 这是一个基本的例子。如果您具有产品模型(/common/models/product.json),请通过添加/common/models/product.js文件来扩展模型: 这将创建以下端点示例:GET / Products / byCate

  • 问题内容: 如何在SQLAlchemy中执行原始SQL? 我有一个在烧瓶上运行的python Web应用程序,并通过SQLAlchemy连接到数据库。 我需要一种运行原始SQL的方法。该查询涉及多个表联接以及内联视图。 我试过了: 但是我不断收到网关错误。 问题答案: 你有没有尝试过: 要么: