Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在laravel中翻译此mysql代码_Mysql_Laravel - Fatal编程技术网

如何在laravel中翻译此mysql代码

如何在laravel中翻译此mysql代码,mysql,laravel,Mysql,Laravel,我的数据库中有3个表。我想知道如何在laravel中翻译这个mysql查询。代码如下: SELECT item.id, item.libelle, entre.item_id, entre.total AS etotal, entre.prix_unitaire AS eprix, sortie.total AS stotal, sortie.prix_unitaire AS sprix, (entre.total - sortie.total) AS restant FROM ( SE

我的数据库中有3个表。我想知道如何在laravel中翻译这个mysql查询。代码如下:

SELECT item.id, item.libelle, entre.item_id, entre.total AS etotal, entre.prix_unitaire AS eprix, sortie.total AS stotal, sortie.prix_unitaire AS sprix, (entre.total - sortie.total) AS restant
FROM (
    SELECT id, libelle
    FROM items
    WHERE EXISTS (
        SELECT *
        FROM entrees
        WHERE items.id = entrees.item_id
        AND date_entree = '23-10-2019'
    )
) item
LEFT JOIN (
    SELECT item_id, prix_unitaire, sum(total) total
    FROM entrees 
    WHERE date_entree = '23-10-2019'
    GROUP BY item_id
) entre ON item.id = entre.item_id
LEFT JOIN (
    SELECT item_id, prix_unitaire, sum(total) total
    FROM sorties 
    GROUP BY item_id
) sortie ON entre.item_id = sortie.item_id;
主菜

对于表格项目

桌上架次


所以请帮帮我。如果可能的话,请给我解释一下这个查询,因为我在另一个论坛上找到了它。首先,让我们将您的查询分解为所有子查询,然后将它们全部写在一起

子查询1

SELECT id, libelle
FROM items
WHERE EXISTS (
    SELECT *
    FROM entrees
    WHERE items.id = entrees.item_id
    AND date_entree = '23-10-2019'
)
已翻译为查询生成器:

$subquery1=DB::table('items')
->选择('id','libelle')
->whereExists(函数($query){
$query->from('entres')
->whereColumn('items.id','entres.item_id'))
->其中(“日期”,“2019年10月23日”);
});
//您可以通过在控制台中转储$subquery1->toSql()来验证这一点。
子查询2

SELECT item_id, prix_unitaire, sum(total) total
FROM entrees 
WHERE date_entree = '23-10-2019'
GROUP BY item_id
已翻译为查询生成器:

$subquery2=DB::table('entres')
->选择('item\u id'、'prix\u unitaire')
->选择RAW('总和(总计)为总计')
->其中(‘日期’、‘2019年10月23日’)
->分组依据(“项目标识”);
//您可以通过在artisan控制台中转储$subquery2->toSql()来验证这一点。
子查询3

SELECT item_id, prix_unitaire, sum(total) total
FROM sorties 
GROUP BY item_id
已翻译为查询生成器:

$subquery3=DB::table(‘架次’)
->选择('item\u id'、'prix\u unitaire')
->选择RAW('总和(总计)为总计')
->分组依据(“项目标识”);
//您可以通过在artisan控制台中转储$subquery3->toSql()来验证这一点。
现在,把这一切放在一起:

$query=DB::table($subquery1,'item'))
->挑选(
'item.id',
“项目诽谤”,
“主项目id”,
“以etotal形式计算的中间总额”,
“作为eprix的欧洲大奖赛”,
“总架次为斯托尔”,
“sotrie.prix_unitaire as sprix”
)
->选择原始('(entre.total-sortie.total)作为重新启动')
->leftJoinSub($subquery2,'entre',函数($join){
$join->on('item.id','=','entre.item_id');
})
->leftJoinSub($subquery3,'sortie',函数($join){
$join->on('entre.item_-id','=','sortie.item_-id');
});
//您可以通过在artisan控制台中转储$query->toSql()来验证这一点。
//要获得结果,只需将->get()附加到$query或do$query->get();
下面是在artisan控制台中测试的此代码的屏幕截图。我之所以使用
$db->
而不是
db::
是因为我之前运行了以下行:

$db=db::connection('mysql');
这确保了当我使用
toSql()
时,查询被转换为mysql。别介意。
我使用的所有内容都可以在

中找到,请在帖子中包含您的代码和任何数据,而不是图片。请参阅:。你试图用什么方法来解决这个问题?对不起,请稍等。这就是我要找的。这是我的工作。非常感谢。