标签: laravel-query-builder

Laravel 4查询构建器 - 具有复杂的左连接

我是laraval 4的新手.

我有这个问题:

SELECT a.id, active, name, email, img_location, IFNULL(b.Total, 0) AS LeadTotal, IFNULL(c.Total, 0) AS InventoryTotal
FROM users AS a
LEFT JOIN (
   SELECT user_id, count(*) as Total
   FROM lead_user
   GROUP BY user_id
) AS b ON a.id = b.user_id
LEFT JOIN (
   SELECT user_id, count(*) as Total
   FROM user_inventory
   GROUP BY user_id
) AS c ON a.id = c.user_id
WHERE a.is_deleted = 0
Run Code Online (Sandbox Code Playgroud)

如何将其转换为laravel查询生成器?我对如何在这种类型的查询中使用laravel连接查询构建器感到困惑.

谢谢!

回答!!

请问lakvel论坛上所有petkostas的帮助.我们得到了答案.

$users = DB::table('users AS a')
->select(array('a.*', DB::raw('IFNULL(b.Total, 0) AS LeadTotal'), DB::raw('IFNULL(c.Total, …
Run Code Online (Sandbox Code Playgroud)

php mysql sql laravel-4 laravel-query-builder

8
推荐指数
1
解决办法
6977
查看次数

如何展平 Laravel 递归关系集合(树集合)?

如何将具有层次结构自引用模型、树集合的集合展平为单维集合。我有一个有父母和孩子的自引用模型。

我希望结果返回一个雄辩的集合,而不是一个简单的集合或数组。数组已用作结果结果以方便演示

关系是这样声明的。

public function parent()
{
    return $this->belongsTo(self::class, 'parent_id');
}

public function parentRecursive()
{
    return $this->parent()->with('parentRecursive');
}

public function children()
{
    return $this->hasMany(self::class, 'parent_id');
}

public function childrenRecursive()
{
    return $this->children()->with('childrenRecursive');
}
Run Code Online (Sandbox Code Playgroud)

所以当我调用model->childrenRecursive它时,它会按原样返回集合。像这样。我对其进行了更改toArray()以使其易于阅读。

array:1 [
  0 => array:6 [
    "id" => 5
    "name" => "I am a child of 1"
    "parent_id" => "1"
    "created_at" => "2016-12-26 13:53:50"
    "updated_at" => "2016-12-26 13:53:50"
    "children_recursive" => array:1 [
      0 => array:6 [
        "id" => 6
        "name" => "I …
Run Code Online (Sandbox Code Playgroud)

php arrays laravel eloquent laravel-query-builder

8
推荐指数
3
解决办法
6738
查看次数

Laravel - 如何从不同的数据库连接加入2个表?

我有一个使用2个数据库的应用程序.我需要创建一个查询,将一个数据库中的表连接到另一个数据库表,但我不知道该怎么做.

所以,我有一个连接名称mysqlphc.我可以毫无问题地与两者沟通.

现在,我正在尝试执行此查询:

$artigos = DB::connection('phc')->table('st')
        ->join('mysql.cart', 'mysql.cart.id_item', '=', 'st.ststamp')
        ->select('st.ststamp', 'st.ref', 'st.design', 'st.imagem', 'mysql.cart.qtt')
        ->where('mysql.carts.id_user','=',Auth::id())
        ->paginate(10);
Run Code Online (Sandbox Code Playgroud)

但是回报我: General error: 20018 Invalid object name 'mysql.cart'

我想访问连接mysql表购物车和连接phc表st.

我怎么解决这个问题?

谢谢

php query-builder laravel laravel-query-builder

8
推荐指数
1
解决办法
1090
查看次数

Laravel查询生成器 - 日期现在使用碳

如何只在数据库列上获取日期,我在控制器上使用Carbon时遇到困难:

$data['nowUser'] = User::where('date', Carbon::today()->toDateString())->get();
Run Code Online (Sandbox Code Playgroud)

日期列在数据库中如下所示:

在此输入图像描述

laravel laravel-query-builder

7
推荐指数
1
解决办法
8202
查看次数

在迁移层5.2中创建数据库视图

我正在尝试通过Laravel 5.2中的迁移创建数据库视图,因为我需要将相当复杂的查询交给视图.我有联盟,球队,球员和积分的模特/桌子.每个人都有一个hasMany/belongsTo关系与之前的关系.目标是创建一个表格,其中每一行都是联盟名称,联盟所有剩余点数的总和,以及点数的数量.其中points.remnants> 4的值.

主要编辑:

到目前为止我所拥有的是什么

         DB::statement( 'CREATE VIEW wones AS
        SELECT
          leagues.name as name,
          sum(points.remnants) as trem,
          count(case when points.remnants < 4 then 1 end) as crem
     FROM leauges
       JOIN teams ON (teams.league_id = leagues.id)
       JOIN players ON (players.team_id = teams.id)
       JOIN points ON (points.player_id = players.id);
     ' );
Run Code Online (Sandbox Code Playgroud)

这不会引发任何错误,但它只返回一行,并且总和是针对所有联赛中的所有点.

我正在寻找的是创建一个表格,其中每个联盟都有一排,有联盟名称,该联赛的剩余积分总数,以及每个联赛剩余少于4的总积分.

标记为已解决.查看大多数问题的已接受答案.一行问题是因为我没有将GROUP BY与count()一起使用.

laravel laravel-migrations laravel-5.2 laravel-query-builder

7
推荐指数
1
解决办法
9955
查看次数

Laravel使用Query Builder进行upsert操作

在我的一个工作脚本中,基于某些指标存储聚合计数,我没有使用Eloquent,因为查询有点复杂,并且使用查询构建器很容易编写.我目前从数据库中获取值,我需要在数据库中插入/更新它.使用Query Builder可以实现upsert操作是否可以使用Query Builder实现?或者我是否每次都需要检查此条目是否在数据库中?

我总共有100,000个条目,并希望将其作为日常工作运行.因此,如果我需要检查数据库中是否存在特定条目,我需要多次访问数据库.有替代解决方案吗?

我正在考虑创建两个模型类,一个使用Eloquent,另一个使用查询构建器.我可以在Eloquent模型中使用我的自定义查询吗?

query-builder laravel eloquent laravel-5 laravel-query-builder

7
推荐指数
2
解决办法
5825
查看次数

Laravel 布尔值在查询中返回“1”/“0”而不是真/假

我有一个查询,它在我用 Laravel 开发的 REST API 上返回一个布尔字段(顺便说一句,我在 SQL Server 上),几天前它返回值为真/假,但现在它返回那个布尔值值作为字符串:“1”/“0”。

知道它可能是什么吗?

我尝试在我的模型上使用强制转换,如下所示:

 protected $casts = [
    'status' => 'boolean',
 ];
Run Code Online (Sandbox Code Playgroud)

这是我的查询:

return DB::table('dbo.visits as V')
        ->leftJoin('dbo.reports AS R', 'R.id_visit', '=', 'V.id')
        ->select('R.id','R.status'); // status is the boolean
Run Code Online (Sandbox Code Playgroud)

提前致谢。

php sql-server laravel eloquent laravel-query-builder

7
推荐指数
1
解决办法
9593
查看次数

在分页功能中使用限制参数

是否可以在 paginate() 函数中使用“limit”参数?

我正在尝试这个:

$users->where(...)->limit(50)->paginate($page)
Run Code Online (Sandbox Code Playgroud)

...现在,如果我在数据库中有 100 个用户,那么 paginate 函数的响应将是所有 100 个用户,而不是 50 个(或使用 limit 参数定义的用户数)。

所以,我的问题是:当我使用分页功能时是否可以实现限制参数?

laravel eloquent laravel-pagination laravel-query-builder

6
推荐指数
1
解决办法
1万
查看次数

如何在 Laravel 查询生成器上获取主键名称

有没有办法使用 Laravel 查询生成器获取表的主键名称?我可以做类似的事情吗

$key = DB::table($someTable)->getPrimaryKey();
Run Code Online (Sandbox Code Playgroud)

我查看了文档和 API,但找不到任何参考资料。

提前致谢。

database query-builder laravel laravel-query-builder

6
推荐指数
2
解决办法
7494
查看次数

Laravel Eloquent - 合并两个雄辩模型结果(不是集合)

我有一张库存变动表,其中显示了产品的历史记录(接收、移动位置等)

\n\n

我有两个计算的查询(通过总计):

\n\n
    \n
  1. 原始收到数量。
  2. \n
  3. 当前的实时数量(物品移动后)。
  4. \n
\n\n

这两个查询都返回相同模型的集合。它们的结果数量始终相同,并且 Product_id 也始终相同。唯一不同的部分是接收/实时数量,我想以某种方式将各个记录合并到一个新集合中。IE

\n\n

查询 1 中的单个记录:

\n\n
0 => StockMovement {#1602 \xe2\x96\xbc\n  #original: array:2 [\xe2\x96\xbc\n    "live_qty" => "8"\n    "product_id" => "2606598e-4150-461a-9e91-10d67cce8daa"\n  ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

查询 2 中的单个记录;

\n\n
0 => StockMovement {#1602 \xe2\x96\xbc\n  #original: array:2 [\xe2\x96\xbc\n    "received_qty" => "15"\n    "product_id" => "2606598e-4150-461a-9e91-10d67cce8daa"\n  ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我试图最终得到一个合并结果,如下所示:

\n\n
0 => StockMovement {#1602 \xe2\x96\xbc\n  #original: array:3 [\xe2\x96\xbc\n    "received_qty" => "15"\n    "live_qty" => "8"\n    "product_id" => "2606598e-4150-461a-9e91-10d67cce8daa"\n  ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想以一种不将 Product 对象转换为数组的方式来执行此操作,因为我需要嵌入其中的关系。

\n\n

目前,我对此进行了如下破解: …

php query-builder laravel eloquent laravel-query-builder

6
推荐指数
1
解决办法
1万
查看次数