Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.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
Php 可选项,其中Laravel_Php_Laravel - Fatal编程技术网

Php 可选项,其中Laravel

Php 可选项,其中Laravel,php,laravel,Php,Laravel,假设我有一个简单的连接查询: $googleAds = TrackingApi::where("company_id",$companyId) ->leftJoin("googleads",function($join) use ($date){ $join->on("tracking_api.google_id", "googleads.id")

假设我有一个简单的连接查询:

$googleAds = TrackingApi::where("company_id",$companyId)
                         ->leftJoin("googleads",function($join) use ($date){

                       $join->on("tracking_api.google_id", "googleads.id")
                            ->where("googleads.created", "<=", $date
                            })
                         ->select(DB::raw('count(googleads.id) as totalAds'))->get();
$googleAds=TrackingApi::where(“公司id”,“公司id”)
->leftJoin(“gogleads”,函数($join)使用($date){
$join->on(“tracking\u api.google\u id”、“googleads.id”)

->其中(“googleads.created””,“您可以使用
when
方法:

$googleAds = TrackingApi::where("company_id",$companyId)
     ->leftJoin("googleads",function($join) use ($date){
         $join->on("tracking_api.google_id", "googleads.id")
              ->when($date, function ($query) use ($date) {
                  return $query->where("googleads.created", "<=", $date
              })
     })
     ->select(DB::raw('count(googleads.id) as totalAds'))->get();
$googleAds=TrackingApi::where(“公司id”,“公司id”)
->leftJoin(“gogleads”,函数($join)使用($date){
$join->on(“tracking\u api.google\u id”、“googleads.id”)
->当($date,函数($query)使用($date){
返回$query->where(“googleads.created”,“作为备选方案:

$googleAds = TrackingApi::where("company_id", $companyId)
     ->leftJoin("googleads",function($join) use ($date){    
         $join->on("tracking_api.google_id", "=", "googleads.id");
         if (!empty($date)) 
            $join->where("googleads.created", "<=", $date);
      });                
     ->select(DB::raw('count(googleads.id) as totalAds'))
     ->get();
$googleAds=TrackingApi::where(“公司id”,“公司id”)
->leftJoin(“gogleads”,函数($join)使用($date){
$join->on(“tracking_api.google_id”、“=”、“googleads.id”);
如果(!空($date))

$join->where(“googleads.created”,”@user320487答案是正确的,但是,您也可以在方法中传递第二个参数,而不是在closer中使用“use”关键字,这将是一个更具可读性和可维护性的代码

$googleAds =
    TrackingApi::whereCompany_id($companyId)
        ->leftJoin("googleads", function ($join) use ($date) {
            $join->on("tracking_api.google_id", "googleads.id")
                ->when($date, function ($query, $date) {
                    return $query->where("googleads.created", "<=", $date);
                });
        })
        ->select(DB::raw('count(googleads.id) as totalAds'))
        ->get();
$googleAds=
TrackingApi::whereCompany\u id($companyId)
->leftJoin(“gogleads”,函数($join)使用($date){
$join->on(“tracking\u api.google\u id”、“googleads.id”)
->何时($date,函数($query,$date){

return$query->where(“googleads.created”,“香草PHP是合法的,即使是纯SQL,当太多的“抽象”阻碍时,这是非常正确的语句。做得好,我的问题稍微更具体一些。@Itaymav MalimovkaI指的是您的具体问题。香草PHP+香草SQL会更简单,更清晰。:-)想想看,多么“愚蠢”很简单,所以感觉不对。嗯,有趣的是,这会抛出一个
您的SQL语法中有一个错误
,因为我假设
when
方法只在
$date
其提供时执行闭包。因此连接不会发生,我希望连接被包括在内,即使
$date
未提供要点。如果未提供日期,则当前应用您的答案的日期将不存在。我将为您提供一个绿色的勾号,以防其正确工作。谢谢。