1-1
public function phone()
{
return $this->hasOne('AppPhone');
}
public function user()
{
return $this->belongsTo('AppUser');
}
1-many
public function phone()
{
return $this->hasMany('AppPhone');
}
public function user()
{
return $this->belongsTo('AppUser');
}
many-many
// migrations/****_**_**_******_create_category_post_table.php
Schema::create('category_post', function(Blueprint $table) {
$table->integer('category_id')->unsigned();
$table->integer('post_id')->unsigned();
$table->primary(['category_id', 'post_id']);
$table->foreign('category_id')->references('id')->on('categories')->onUpdate('cascade')->onDelete('cascade');
$table->foreign('post_id')->references('id')->on('posts')->onUpdate('cascade')->onDelete('cascade');
});
// Post.php
public function categories()
{
return $this->belongsToMany(Category::class);
}
// Category.php
public function posts()
{
return $this->belongsToMany(Post::class);
}
In post.php, use this relation: public function categories(){ return $this->belongsToMany(Category::class, 'category_post', 'post_id', 'category_id'); }
//controller
$post = new Post();
$post->title = $request->title;
$post->body = $request->body;
$post->categories()->attach($request->categories_id);
https://laracasts.com/discuss/channels/laravel/how-to-seed-db-in-pivot-table-laravel
https://laraveldaily.com/pivot-tables-and-many-to-many-relationships/
https://stackoverflow.com/questions/38746613/how-to-insert-a-post-with-multi-category-and-with-multi-column-deferent-category
query builder
https://stackoverflow.com/questions/33449387/laravel-creating-different-views-from-query/33449507#33449507
N + 1
return new SongsCollection(Song::with('album')->get());
'songs' => SongResource::collection($this->whenLoaded($this->songs))
$comment = Post::find(1)->comments()
->where('title', 'foo')
->first();
$model->relation; // result of the relation, ie. null/model for x-1 relations or collection for x-m
$model->relation(); // relation object
$user->posts()->where('active', 1)->get();
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class User extends Model
{
public function orders() {
return $this->hasMany(AppOrder::class);
}
}