Php 使用DB::Raw时,Laravel Join未按预期工作
因此,我得到的错误是Php 使用DB::Raw时,Laravel Join未按预期工作,php,laravel,laravel-4,eloquent,Php,Laravel,Laravel 4,Eloquent,因此,我得到的错误是SQLSTATE[42S02]:未找到基表或视图:字段列表中的1109未知表“team_members” 因此,这种加入似乎并没有真正发生。有人看到代码中的问题吗 $data = DB::select(DB::raw(' Select team_members.name As teamMemberName, Sum(TimestampDiff(minute, product
SQLSTATE[42S02]:未找到基表或视图:字段列表中的1109未知表“team_members”
因此,这种加入似乎并没有真正发生。有人看到代码中的问题吗
$data = DB::select(DB::raw('
Select
team_members.name As teamMemberName,
Sum(TimestampDiff(minute, production_hours.time_start,
production_hours.time_stop)) / 60 As hoursWorked,
production_activities.name As groupName,
production_hours.team_member_id,
production_hours.production_activities_id,
production_hours.hourly_rate
'))
->join('production_days', 'production_hours.production_day_id', '=', 'production_days.id')
->join('production_activities', 'production_hours.production_activities_id', '=', 'production_activities_id')
->where('DATE(production_day.begin)', '>', $beginDate)
->where('DATE(production_day.begin)', '<', $endDate)
->groupBy('team_members.name')
->groupBy('production_activities.name')
->get();
$data=DB::select(DB::raw('
挑选
team_members.name作为teamMemberName,
总和(时间差)(分钟、生产时间、开始时间、,
生产(小时、时间(停止))/60工作小时,
production\u activities.name作为组名,
制作时间、团队成员id、,
生产时间、生产活动id、,
生产小时数、小时费率
'))
->加入('production\u days'、'production\u hours.production\u day\u id'、'='、'production\u days.id')
->加入('production\u activities'、'production\u hours.production\u activities\u id'、'='、'production\u activities\u id')
->其中('DATE(production_day.begin)','>',$beginDate)
->其中('DATE(production_day.begin)',',$beginDate)
->其中(DB::raw('DATE('production_days`.'begin`)),“最佳示例将其与所有可能的示例一起使用
e、 g
那么,您要查询哪个表呢?您并没有在查询中指定。您只是在对其进行一般性的选择nothing@MarkBaker是的,我太傻了。DB::select()
和DB::table()->select()之间有区别
-正如@MarkBaker指出的,第一个方法是调用连接
对象的方法,它只运行查询,后者是query\Builder
对象方法,可以按您需要的方式链接。
$data = DB::table('production_days')->select(DB::raw('
team_members.name As teamMemberName,
Sum(TimestampDiff(minute, production_hours.time_start,
production_hours.time_stop)) / 60 As hoursWorked,
production_activities.name As groupName,
production_hours.team_member_id,
production_hours.production_activities_id,
production_hours.hourly_rate
'))
->join('production_hours', 'production_hours.production_day_id', '=', 'production_days.id')
->join('production_activities', 'production_hours.production_activities_id', '=', 'production_activities_id')
->join('team_members', 'production_hours.team_member_id', '=', 'team_members.id')
->where(DB::raw('DATE(`production_days`.`begin`)'), '>', $beginDate)
->where(DB::raw('DATE(`production_days`.`begin`)'), '<', $endDate)
->groupBy('team_members.name')
->groupBy('production_activities.name')
->get();
$issueitems = \DB::table('products_items')->where("products_items.deleted", "0");
$data=$issueitems->select(array(
"itemcategories.name as itemcategoryname",
"itemsubcategories.name as itemsubcategoryname",
"items.name as itemsname",
"items.id as item_id",
"products_items.stock as stock",
"measureds.name as measureds",
\DB::raw("COALESCE(issue_stock.price,0) as price"),
\DB::raw("COALESCE(issue_stock.iquantity,0) as issuequantity")))
->join("products", function($join) {
$join->on('products.id', '=', 'products_items.product_id')
->on("products.deleted", "=", "products_items.deleted");
})
->join("items", "items.id", "=", "products_items.item_id")
->join("itemcategories", "itemcategories.id", "=", "items.item_category_id")
->join("itemsubcategories", "itemsubcategories.id", "=", "items.item_subcategory_id")
->join("measureds", "measureds.id", "=", "items.measured_id")
->leftjoin(
\DB::raw('(SELECT
productissues.product_id,itemstocks.item_id,sum(productissue_items.quantity) as iquantity
,sum(itemstocks.price * (COALESCE(productissue_items.quantity,0))) as price
FROM
productissues
INNER JOIN productissue_items ON productissues.id = productissue_items.productissues_id
INNER JOIN itemstocks ON itemstocks.id = productissue_items.itemstock_id
WHERE itemstocks.deleted = "0" AND productissue_items.deleted = "0"
group by productissues.product_id,itemstocks.item_id
) issue_stock'), function($join) {
$join->on("issue_stock.product_id", "=", "products_items.product_id")
->on("issue_stock.item_id", "=", "products_items.item_id");
})->get();