我是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) 如何将具有层次结构自引用模型、树集合的集合展平为单维集合。我有一个有父母和孩子的自引用模型。
我希望结果返回一个雄辩的集合,而不是一个简单的集合或数组。数组已用作结果结果以方便演示
关系是这样声明的。
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) 我有一个使用2个数据库的应用程序.我需要创建一个查询,将一个数据库中的表连接到另一个数据库表,但我不知道该怎么做.
所以,我有一个连接名称mysql和phc.我可以毫无问题地与两者沟通.
现在,我正在尝试执行此查询:
$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.
我怎么解决这个问题?
谢谢
如何只在数据库列上获取日期,我在控制器上使用Carbon时遇到困难:
$data['nowUser'] = User::where('date', Carbon::today()->toDateString())->get();
Run Code Online (Sandbox Code Playgroud)
日期列在数据库中如下所示:
我正在尝试通过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
在我的一个工作脚本中,基于某些指标存储聚合计数,我没有使用Eloquent,因为查询有点复杂,并且使用查询构建器很容易编写.我目前从数据库中获取值,我需要在数据库中插入/更新它.使用Query Builder可以实现upsert操作是否可以使用Query Builder实现?或者我是否每次都需要检查此条目是否在数据库中?
我总共有100,000个条目,并希望将其作为日常工作运行.因此,如果我需要检查数据库中是否存在特定条目,我需要多次访问数据库.有替代解决方案吗?
我正在考虑创建两个模型类,一个使用Eloquent,另一个使用查询构建器.我可以在Eloquent模型中使用我的自定义查询吗?
query-builder laravel eloquent laravel-5 laravel-query-builder
我有一个查询,它在我用 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)
提前致谢。
是否可以在 paginate() 函数中使用“limit”参数?
我正在尝试这个:
$users->where(...)->limit(50)->paginate($page)
Run Code Online (Sandbox Code Playgroud)
...现在,如果我在数据库中有 100 个用户,那么 paginate 函数的响应将是所有 100 个用户,而不是 50 个(或使用 limit 参数定义的用户数)。
所以,我的问题是:当我使用分页功能时是否可以实现限制参数?
有没有办法使用 Laravel 查询生成器获取表的主键名称?我可以做类似的事情吗
$key = DB::table($someTable)->getPrimaryKey();
Run Code Online (Sandbox Code Playgroud)
我查看了文档和 API,但找不到任何参考资料。
提前致谢。
我有一张库存变动表,其中显示了产品的历史记录(接收、移动位置等)
\n\n我有两个计算的查询(通过总计):
\n\n这两个查询都返回相同模型的集合。它们的结果数量始终相同,并且 Product_id 也始终相同。唯一不同的部分是接收/实时数量,我想以某种方式将各个记录合并到一个新集合中。IE
\n\n查询 1 中的单个记录:
\n\n0 => 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}\nRun Code Online (Sandbox Code Playgroud)\n\n查询 2 中的单个记录;
\n\n0 => 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}\nRun Code Online (Sandbox Code Playgroud)\n\n我试图最终得到一个合并结果,如下所示:
\n\n0 => 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}\nRun Code Online (Sandbox Code Playgroud)\n\n我想以一种不将 Product 对象转换为数组的方式来执行此操作,因为我需要嵌入其中的关系。
\n\n目前,我对此进行了如下破解: …