There is then a Muitos para Muitos
( N: M ) relationship, where tables Produto
and Cores
has an intermediate table with its corresponding keys: / p>
Model Cor
:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Cor extends Model
{
protected $table = 'cor';
protected $fillable = array('descricao');
protected $primaryKey = 'id';
public $timestamps = false;
//relação muitos para muitos.
public function produtos()
{
return $this->belongsToMany(Produto::class,'produto_cor','cor_id', 'produto_id');
}
}
Model Produto
:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Produto extends Model
{
protected $table = 'produto';
protected $fillable = array('description', 'cor_id');
protected $primaryKey = 'id';
public $timestamps = false;
//relação muitos para muitos.
public function cores()
{
return $this->belongsToMany(Cor::class,'produto_cor','produto_id', 'cor_id');
}
}
No Controller
public function index()
{
$id = 1; // código do produto
$result = Cor::leftJoin('produto_cor', function($join) use ($id)
{
$join->on('produto_cor.cor_id', '=', 'cor.id')
->where('produto_cor.produto_id', (int)$id);
})
->select(\DB::raw('cor.id, cor.descricao, if(produto_id is null, 0, 1) corstatus'))
->orderBy('cor.descricao')
->get();
return view('test.index', compact('result'));
}
In the variable $result
return to color list with an extra field corstatus where% the color is present in that product, different not.
And finally in corstatus = 1
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Laravel - Test</title>
{{ Html::script('js/jquery.v1.11.0.js') }}
</head>
<body>
@foreach($result as $r)
<div>
<input @if((int)$r->corstatus==1) {!! 'checked="checked" ' !!} @endif type="checkbox" name="cor[]" value="{{$r->id}}">{{$r->descricao}}
</div>
@endforeach
</body>
</html>