2017-01-16 5 views
1

In meiner Datenbank habe ich zwei Tabellen notification und alertFrequency. Die Benachrichtigung hat das Feld id and website_url und die Alarmhäufigkeit hat id und notification_id. Beide Tabellen haben Modelle, die eins zu viele sind. Die Benachrichtigung kann einen oder mehrere alertFrequency haben.eins zu viele Beziehung in Laravel

class Notification extends Model { 
    public function alertFrequencies() { 
     return $this - > belongsToMany('AlertFrequency::class'); 
    } 
} 

namespace App; 
use Illuminate\ Database\ Eloquent\ Model; 
class AlertFrequency extends Model { 
    protected $table = 'alertFrequencies'; 
    public function notification() { 
     return $this - > belongsTo(Notification::class); 
    } 
} 

im Info Modell, ich schrieb eine Funktion Alarm genannt, die mir die laastest Warnung vor einem bestimmten websie zugeordnet geben.

public function alert(){ 
    $alert_frequency = AlertFrequency::find('notification_id')->first(); 
    $o_notification = $this->alertFrequencies()->where('notification_id',$alert_frequency->id) 
       ->select('created_at')->orderBy('created_at')->first(); 
    if($alert_frequency ==null){ 
     return false; 
    } 
    return created_at; 
} 

Ist dies ein richtiger Weg, um die Daten zu extrahieren? Ich würde mich über Vorschläge und Hilfe freuen.

Antwort

0

Mitteilung hasMany AlertFrequency

public function alertFrequencies(){ 
       return $this->hasMany('App\AlertFrequency'); 
     } 

und

$alert_frequency = AlertFrequency::with('notification')->orderBy('created_at','desc')->first(); 

lädt die neueste AlertFrequency zusammen mit seinem notification.

Siehe One to Many relationship und Eager loading in Dokumentation.

+0

Ich dachte, es nicht viel Unterschied macht. Ich werde es auch damit überprüfen. tnx –

+0

wo soll ich diesen Code schreiben, oder meinen alten Code ersetzen. –

+0

$ alert_frequency = AlertFrequency :: mit ('notification') -> orderBy ('created_at', 'desc') -> first(); –

0

um den neuesten Alarm zu erhalten, der mit einer bestimmten Webseite mit URL $ website_url verbunden ist.

Notification::where('website_url', $website_url)->orderBy('created_at')->first(); 

hasMany Beziehung:

public function alertFrequencies(){ 
      return $this->hasMany('App\AlertFrequency','notification_id'); 
    } 
Verwandte Themen