laravel belongsToMany code example
Example 1: one to many laravel
For example, a blog post may have an infinite number of comments. And a single
comment belongs to only a single post
class Post extends Model
{
public function comments()
{
return $this->hasMany('App\Models\Comment');
}
}
class Comment extends Model
{
public function post()
{
return $this->belongsTo('App\Models\Post');
}
}
Example 2: laravel detach
$user->roles()->detach($roleId);
$user->roles()->detach();
Example 3: whereHas site:https://laravel.com/docs/
use Illuminate\Database\Eloquent\Builder;
$posts = Post::whereHas('comments', function (Builder $query) {
$query->where('content', 'like', 'code%');
})->get();
$posts = Post::whereHas('comments', function (Builder $query) {
$query->where('content', 'like', 'code%');
}, '>=', 10)->get();
Example 4: laravel belongs to
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Phone extends Model
{
public function user()
{
return $this->belongsTo('App\Models\User');
}
}
Example 5: laravel pivot table model
public function customer(){
return $this->belongsToMany('customer')->withPivot(
'start_date',
'stop_date',
'rem_date',
'due_date',
'status'
);
}
public function services(){
return $this->belongsToMany('Service')->withPivot(
'start_date',
'stop_date',
'rem_date',
'due_date',
'status'
);
}
public function staff(){
return $this->belongsToMany('Staff');
}
public function custservs(){
return $this->belongsToMany('Custserv');
}
Schema::create('customer_service_user', function(Blueprint $table)
{
$table->increments('id');
$table->integer('customer_service_id')->unsigned()->index();
$table->foreign('customer_service_id')->references('id')->on('customer_service')->onDelete('cascade');
$table->integer('staff_id')->unsigned()->index();
$table->foreign('staff_id')->references('id')->on('staff')->onDelete('cascade');
$table->timestamps();
});
Example 6: add data to laravel many to many relationship
1. $user->roles()->attach($roleId);
2. you may also pass an array of additional data to be inserted
$user->roles()->attach($roleId, ['expires' => $expires]);
3.
$user->roles()->detach($roleId);
4.
$user->roles()->detach();
5. Any IDs that are not in the given array will be removed from the intermediate
table
$user->roles()->sync([1, 2, 3]);
6. If you need to update an existing row in your pivot table, you may use
updateExistingPivot method. This method accepts the pivot record foreign
key and an array of attributes to update:
$user->roles()->updateExistingPivot($roleId, $attributes);