2017-11-02 1 views
0

Ich versuche, eine Abfrage zu machen, die etwas wie sagt, wenn hire_status vorhanden ist, drucken Sie diese Werte nicht aus, sondern drucken Sie nur diejenigen mit hire_status aus, die noch keinen Wert haben. Aber ich weiß nicht, wie ich es machen soll. Ich habe so etwas gemacht, kann mir jemand helfen? Ist eine andere Art von Funktion, es zu tun?Wie kann man nach "wo Daten nicht existieren" in Laravel abfragen?

Was ich tun möchte, ist innerhalb der Ansichtsdatei, wenn der Benutzer seine Daten in die Datenbank eingefügt hat, sollte ihr Name in der Ansichtsdatei verschwinden, um zu vermeiden, zweimal auf den Personennamen zu klicken. Aber ich weiß nicht, wie zu tun, dass

Hier ist der Code:

 public function getHire(){ 
     $data['data'] = DB::table('personal_infos')->join('hires', 'personal_infos.id', '=', 'hires.user_id')->select('personal_infos.id','personal_infos.Name','personal_infos.deleted_at','hires.hire_status')->where('deleted_at',NULL)->whereNull('hires.hire_status')->get()->sortByDesc('created_at'); 
     if(count($data)>0){ 
     return view('hire',$data); 
    }else{ 
    return view('hire'); 
} 

personal_info Modelle:

class personal_info extends Eloquent 
{ 
    use SoftDeletes; 
    protected $fillable = array('Email', 'Name'); 
    protected $table = 'personal_infos'; 
    protected $primaryKey = 'id'; 
    protected $dates = ['deleted_at']; 
public function hires() { 
     return $this->hasOne('App\hire','user_id'); 
    } 
} 

leihweise Modell:

protected $fillable = array('hire_status','user_id'); 

public function personal_infos() { 
    return $this->belongsTo('App\personal_info', 'user_id', 'id'); 
} 

hire.blade.php

<table class="table table-bordered"> 
     <tr> 
     <th><strong><big>Name: </big></strong></th>  
     <th><strong><big>Hire Action: </big></strong></th> 
     </tr> 
     <td> 
     <tr> 
     @foreach($data as $value) 
     <tr>  
     <th><a href="{{route('user.show',['id'=>$value->id])}}">{{$value->Name}}</a></th> 
    <th> 
     <form class="form-horizontal" method="post" action="{{ url('/hire_status/'.$value->id) }}"> 
     {{ csrf_field() }} 
     <input type="hidden" name="user_id" value="{{$value->id}}"> 
     <input type="radio" name="hire_status" value="Yes"> Yes<br> 
     <input type="radio" name="hire_status" value="No"> No<br> 

     <div class="form-group"> 
      <div class="col-md-6-offset-2"> 
       <input type="submit" class="btn btn-primary" value="Save"> 
      </div> 
      </div> 

     </form> 
    </th>    
     </tr> 
     @endforeach 
     </tr> 
     </tr> 
    </table> 
+0

Eloquent Modelle erstellen für Ihre Daten und definieren Sie Beziehungen - es ist viel einfacher, dann Daten zu bekommen, die Sie benötigen, ohne Joins manuell zu schreiben. https://laravel.com/docs/5.5/eloquent –

+0

@ jedrzej.kurylo, ich habe bereits die Beziehung bereits definiert, aber ich weiß nicht, wie man es benutzt – Dkna

+0

Ich möchte personal_infos, Spaltenname, wenn Tabelle hires, ist leer, das ist der Teil, den ich nicht kenne – Dkna

Antwort

1

Mit Eloquent Modelle und die Beziehungen zwischen ihnen richtig definiert sind, Sie werden in der Lage sein, alle Objekte von ** ** personal_info Klasse zu holen, die nicht mit einem verwandten mieten Rekord haben:

$personalInfos = personal_info::whereDoesntHave('hires')->get(); 
Verwandte Themen