Diego182 Diego182 - 5 months ago 14x
MySQL Question

Laravel 5.1 - view data filter with relationship

i have a problem to show my products that have a specific category, this is my tables migration and models:
Products migration:

Schema::create('products', function (Blueprint $table) {
$table->string('name', 255);
$table->string('extract', 300);
$table->decimal('price', 5, 2);
$table->string('image', 300);



// relations


model product


namespace dixard;

use Illuminate\Database\Eloquent\Model;

use dixard\User;

use dixard\Category;

use dixard\OrderItem;

use dixard\Color;

class Product extends Model

protected $table = 'products';

protected $fillable =



public function user() {
return $this->belongsTo('dixard\User');


public function category() {
return $this->belongsTo('dixard\Category');


public function OrderItem() {
return $this->belongsTo('dixard\OrderItem');


public function Color() {
return $this->belongsTo('dixard\Color');



Category migrations

Schema::create('categories', function (Blueprint $table) {
$table->string('name', 255)->unique();


$table->string('color', 30);


Model category

use dixard\Product;

class Category extends Model
protected $table = 'categories';

protected $fillable = [


public $timestamps = false;

public function products() {

return $this->hasMany('dixard\Product');



I'm trying to show all products that have category_id = 1, this category id=1 is my t-shirt category. My controller:

use dixard\Product;
use dixard\Category;

class TshirtController extends Controller

public function men_tshirt()
$category = Category::where('name', '=', 't-shirt')->orderBy('id', 'desc')->first();
$product_men = Product::where('category_id','=', $category->id)->orderBy('id', 'desc');

dd($product_man) OR
return view('store.shop.men',compact('product_men'));

// It doesnt work, doesnt show me nothing.



Try this:


Example :


You can also use where clause :


Category::where('name', 't-shirt')->products;

Refer : https://laravel.com/docs/5.1/eloquent-relationships