简体   繁体   中英

one to many relationship in laravel

In my database, i have two tables notification and alertFrequency . The notification has field id and website_url and the alert frequency has id and notification_id . Both tables has models which is one to many. The notification can have one or many alertFrequency .

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);
    }
}

in the notification model, i wrote a function called alert, that will give me the laastest alert associated with a specific websie.

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;
}

Is this a right way to extract the data? i would appreciate any suggestions and helps?

Notification hasMany AlertFrequency

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

and,

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

loads the latest AlertFrequency along with it's notification .

See One to Many relationship and Eager loading in documentation.

to get laastest alert associated with a specific websie with url $website_url.

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

hasMany relation :

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM