【问题标题】:how to search in a collection laravel?如何在集合中搜索laravel?
【发布时间】:2020-12-12 10:08:04
【问题描述】:

我有 3 张桌子,arts(code,designation,prix,qte,gamme_id) 游戏(类型) 制造(art_id,prix_total,quantité) 我想在事实表中搜索两个日期之间的所有游戏,但问题是我在事实和游戏之间没有关系,我只是在事实和艺术之间有关系

控制器

public function store(Request $request)

    {
        $prix_totale=0;
        
        $Gammes = Gamme::all();
        $gamme_id=$request->get('gamme_id');
        $date_debut=$request->get('date_debut');
        $date_fin=$request->get('date_fin');
        $articles=Art::where('gamme_id','LIKE',$gamme_id)->paginate(1000);
 
               

          $data =Facture::where('art_id','LIKE',$articles)->whereBetween('created_at',[$date_debut,$date_fin])->orderByDesc('created_at')->paginate(1000);
          foreach ($data as $p) {

            $prix_totale+=$p->prix;

          }

        return view('affairegamme.resultat', compact('data','arts','prix_totale','articles'));
    }

index.blade.php

<form method="post" action="{{ route('affairegamme.store') }}" enctype="multipart/form-data" width="20" height="20">

    @csrf
    <div class="form-group">
                 <label class="col-md-4">Gamme:</label>
                <div class="col-md-8">
                <select name="gamme_id"  id="gamme_id" class="form-control" >
                    <option value="">Select Gamme</option>
                    @foreach($gammes as $gamme)
                    <option value="{{ $gamme->id}}">{{ $gamme->type }}</option>
                    @endforeach
                </select>
                </div>
            </div>


         <div class="form-group">
        <label class="col-md-4">Date debut :</label>
        <div class="col-md-8">
            <input type="date"   name="date_debut" value="{{ old('date', date('Y-m-d')) }}" class="form-control input-lg" />
        </div>
    </div>
    


    <div class="form-group">
        <label class="col-md-4">Date fin</label>
        <div class="col-md-8">
            <input type="date"   name="date_fin" value="{{ old('date', date('Y-m-d')) }}" class="form-control input-lg" />
        </div>
    </div>   
    
     <br/>
    <div class="form-group text-center">
        <input type="submit" name="add" class="btn btn-primary input-lg" value="Chercher !" />
    </div>

</form>

resultat.blade.php

<table class="table table-bordered table-striped">
    
          <td><h6>ID de facture</h6></td>
            <td><h6>date</h6></td>

          <td><h6>Operation_id</h4></td>
          <td><h6>Article</h4></td>
          <td><h6>Prix Unitaire d Article</h4></td>
           <td><h6>Quantite</h6></td>
           <td><h6>Prix Totale</h6></td>
        

    </tr>
    @foreach($data as $row)
        <tr>
    <td>{{ $row->id}}</td>
    <td>{{ $row->created_at}}</td>

      <td>{{ $row->operation_id }}</td>
      <td> {{$row->art->designation}}</td>
      <td> {{$row->art->prix}}</td>
      <td> {{$row->qte}}</td>
      <td> {{$row->prix}}</td>
            
            
    @endforeach

</table>
<br> </br>
 <h1  style="font-size:200% ;text-align:center">Le chiffre d affaire pour la gamme  est : {{$prix_totale}} dt</h1>

【问题讨论】:

    标签: php html mysql laravel


    【解决方案1】:

    下面提供的 eloquent 查询将在裂缝表中搜索提供的日期之间的裂缝。

    $grammesBetweenTwoDates = Gramme::whereHas('arts',function($query) use ($date_debut,$date_fin) {
            
            // Any query to apply filter in arts 
            return $query->whereHas('fractures', function($fractureQuery) use ($date_debut,$date_fin){
                
                // Any query to apply filter in fractures 
                return $fractureQuery->whereBetween('created_at', [$date_debut,$date_fin]);
            });
        })->paginate(1000);
    

    由于您似乎无法理解答案,我会尽力解释。上述查询指示数据库

    1. 查找所有具有艺术的语法(来自艺术表中的 grames_id)。
    2. 查找所有有骨折的艺术(来自骨折表中的arts_id)
    3. 查找两个日期之间的所有裂缝(从 eloquent 查询中提供的日期开始)

    当以上所有情况都匹配时,查询返回结果。

    在上述查询中,您需要在 Grammes 模型中具有 arts 关系。

    public function arts()
    {
         return $this->hasMany(Arts::class);
    }
    

    并且您需要在 Art 模型中提供 fractures 关系

    public function fractures()
    {
         return $this->hasMany(Fracture::class);
    }
    

    【讨论】:

    • 我需要在哪里写那个兄弟?在控制器中?究竟在哪里?因为我已经有了模型中的关系
    • @Hassen 刚刚更新了答案看看。它将在两个日期之间进行搜索,并为您提供这些日期中的所有克数。把它放在控制器中
    • 兄弟我想在表格中搜索两个日期之间的游戏,但关系是艺术和艺术之间的关系(art_id 外键)我没有(gamme_id 外键)所以我需要使用艺术像一个支点
    猜你喜欢
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 2017-09-04
    • 2019-03-10
    • 2021-08-15
    相关资源
    最近更新 更多