【问题标题】:Laravel - Return multiple values within one methodLaravel - 在一种方法中返回多个值
【发布时间】:2017-10-02 18:51:45
【问题描述】:

这是我目前陷入困境的地方。我正在使用多种方法对同一个表进行不同的查询:

public function totalOfA()
{
    return $a = Stocks::where('user_id','=', $this->employee->id)
        ->where('category','=','a')
        ->pluck('qty')
        ->sum();
}

public function totalOfB()
{
    return $a = Stocks::where('user_id','=', $this->employee->id)
        ->where('category','=','a')
        ->pluck('qty')
        ->sum();
}

我正在尝试寻找一种方法将所有这些总结为一个函数

public function totalStocks()
{
    $stocks = Stocks::where('user_id','=', $this->employee->id)
        ->get();

    $a = $stocks::where('category', '=', 'a')
        ->pluck('qty')
        ->sum();

    $b = $stocks::where('category', '=', 'b')
        ->pluck('qty')
        ->sum();

    return $a and $b
}

所以我可以从视图中将其称为 totalstocks()->a 或 totalstocks()->b 之类的。

【问题讨论】:

  • 您对第二个代码块有疑问吗?
  • 你为什么不使用范围

标签: php laravel


【解决方案1】:

试试这个:

function totalStocks() {
   $a = 1;
   $b = 2;

   return  [$a, $b];
}

list($valueA, $valueB) = totalStocks();
echo $valueA; //1
echo $valueB; //2

【讨论】:

    【解决方案2】:

    你不能这样调用。你可以创建一个数组或者你可以单独传递给查看

    public function totalStocks()
    {
        $stocks = Stocks::where('user_id','=', $this->employee->id)
            ->get();
    
        $a = $stocks::where('category', '=', 'a')
            ->pluck('qty')
            ->sum();
    
        $b = $stocks::where('category', '=', 'b')
            ->pluck('qty')
            ->sum();
    
        return view('home',['stocks'=> $stocks,'a'=>$a,'b'=>$b]);
    
    }
    

    现在您可以在视图中访问 $a ,$b

     public function totalStocks()
        {
    
            $data['stocks'] = Stocks::where('user_id','=', $this->employee->id)
                ->get();
    
           $data['a'] = $stocks::where('category', '=', 'a')
                ->pluck('qty')
                ->sum();
    
           $data['b'] = $stocks::where('category', '=', 'b')
                ->pluck('qty')
                ->sum();
    
            return view('home',['data'=>$data]);
    
        }
    

    这样你就可以像{{$data['a']}}一样访问视图

    【讨论】:

      【解决方案3】:

      试试这个:

       $x = array(
              'a' => $a,
              'b' => $b,
          );
      return (object) $x
      

      【讨论】:

        【解决方案4】:

        可能的解决方案是在类中将私有/受保护变量定义为ab,并在totalStocks() 方法中为它们设置值。

        所以你的函数应该是这样的:

        public function totalStocks()
        {
            $stocks = Stocks::where('user_id','=', $this->employee->id)
                ->get();
        
            $this->a = $stocks::where('category', '=', 'a')
                ->pluck('qty')
                ->sum();
        
            $this->b = $stocks::where('category', '=', 'b')
                ->pluck('qty')
                ->sum();
        
            // Return optional
            return $this;
        }
        

        因此,无论何时使用类,您都可以访问 $this->a$this->b 作为类的属性。

        【讨论】:

          猜你喜欢
          • 2014-06-23
          • 2015-12-21
          • 1970-01-01
          • 2017-03-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多