2016-09-26 29 views
0

こんにちは私はこれが可能かどうかわかりませんが、配列を作成しようとしていますが、空白に戻ってしまうので戻りません。値が...ここPHP関数は、配列を構築するために自分自身を呼び出します

 public function getURL($category_id,$output=null){ 

      $getCat = ProductCategory::where("id","=",$category_id)->get(); 
      if(count($getCat) != 0){ 
       foreach($getCat as $cat){ 
        $parent = $cat->category_id; 
        $output[] = $parent; 
        $this->getURL($parent,$output); 
       } 
      } else { 
       $finish = true; 
      } 

      if($finish){ 
       //var_dump($output); this returns what I need 
       return $output; 
      } 

     } 

編集 次のコードは、私はURLのリストを構築しようとしていますされてください、私のデータベースに私は、そのサブカテゴリーを表すためにCATEGORY_IDています。だから私は@Parziphalへ

おかげで、彼は私に私のミスを示し、私のためにそれを修正したURLのリストに

UPDATEを構築するために、すべてのIDの背中を取得しようとしています。ここに彼の答えがあります。そこにも皆さん、ありがとうございました。

public function getURL($categoryId) 
    { 
    return $this->getParentIdsRecursive($categoryId, []); 
    } 

    protected function getParentIdsRecursive($categoryId, $ids = []) 
    { 
    $category = ProductCategory::where("id", $categoryId)->first(); 

    if ($category && $category->category_id) { 
     $ids[] = $category->category_id; 
     $ids = $this->getParentIdsRecursive($category->category_id, $ids); 
    } 

    return $ids; 
    } 
+0

getURL($ category_id、$ output = null)からgetURL($ category_id、&$ output = null)に素早く変更を加える – Scott

+1

このポイントは何ですか?あなたは '$ getCat = ProductCategory :: where(" id "、" = "、$ category_id) - > pluck( 'category_id')'のようなものを探していますか? [Pluck](https://laravel.com/docs/5.3/collections#method-pluck) – Mihailo

+0

うまくいかなかった:(私はURLのリストを作成しようとしています。私のデータベースには、そのサブを表すcategory_idがあります私はすべてのIDを取得してURLリストを作成しようとしています –

答えて

0

私はこれをテストしていない、と私はあなたがやろうとしているものを理解していませんが、多分この作品:

public function getURL($categoryId) 
{ 
    return $this->getParentIdsRecursive($categoryId, []); 
} 

protected function getParentIdsRecursive($categoryId, $ids = []) 
{ 
    $category = ProductCategory::where("id", $categoryId)->first(); 

    if ($category && $category->category_id) { 
     $ids[] = $category->category_id; 
     $ids = $this->getParentIdsRecursive($category->category_id, $ids); 
    } 

    return $ids; 
} 

私は(とコードがある)場合ではありません間違っていると、すべてのカテゴリIDが最初の親に返されます。

+1

なぜOPがこれを試していますか?これはなぜ "多分"うまくいくのですか?***良い答え***は何が行われたのかについての説明を常に持ちます。なぜOPのためだけでなく将来のvisiそれでは。 –

+0

私は(誰も)彼がやろうとしていることを理解していないので、彼が必要とするものかどうかは分かりません。私は自分のコードを動作させようとしています。メソッド名は "getURL"ですが、彼はIDの束を取得しています。あなたは彼がidによって記録を見ているときに 'get 'を呼んでいることに気づいたことがありますか?結果が常に1になると、彼はforeachを行います。私が理解していることは、両親がいなくなるまですべての親のIDを取得しようとしていることです。それが私の行いです。これが彼が必要としているものでないなら、彼はさらに説明することができます... – Parziphal

+0

@Parziphal omgありがとう、これは完全に働いています。申し訳ありませんが、それを正しく説明していないが、これは私が必要としたものでした!あまりにも多くの他の誰もが入力してくれてありがとうございます –

関連する問題