2014-11-13 12 views
0

저는 PHP와 Laravel을 처음 사용 했으므로 많은 의문점이 있습니다. 내가 phpMyAdmin을를 사용하고, 다음 관계가있어 :Laravel Pivot 테이블 belongsToMany

Table:| productos | tipos | marcas | producto_tipo_marca (pivot table) 
     | id  | id | id  | id 
     | id_tipo | nombre | nombre | id_producto 
     | id_marca |  |  | id_tipo 
     |   |  |  | id_marca 

(나는 영어로 이름을 작동)를 그래서, 테이블 제품 (PRODUCTOS)는 foreing_keys ID_TYPE (id_tipo)와 id_brand (id_marca)와 realtionship이 . 제품에는 유형 및 브랜드와 다 대다 관계가 있습니다.

질문 1 : 피벗 테이블이 필요했는지 여부. (미안하지만 나는 내 일에만 혼자 있고 의심이있다)

jquery와 목록 데이터 (모두 괜찮음)로 작업했지만 product.index에서 id_type-> nambe 및 id_brand를 보여주고 싶다. -> nambe,하지만 난 그것이 ID_TYPE 및 id_brand 년대 데이터 테이블에 표시 할 수있는 것은 (숫자 데이터 만 표시) :

보기 :

@foreach($products as $product) 
    <td>{{ $product->id_type->name}}</td> 
    <td>{{ $product->id_brand->name}}</td> 
@endforeach 
: product.index

@foreach($products as $product) 
    <td>{{ $product->id_type}}</td> 
    <td>{{ $product->id_brand }}</td> 
@endforeach 

내가 좋아하는 일을 할 때

오류가 있습니다 : 객체가 아닌 속성을 얻으려고합니다. (보기 : C : \ xampp \ htdocs \ posm \ app \ views \ productos \ index.blade.php)

그래서 많은 자습서를 보지만 핵심을 얻을 수 없습니다.

제품 (모델)

protected $guarded = array(); 
protected $table = 'products'; 
protected $fillable = array('id_type','id_brand'); 

질문 2 : 내 모델에서

이가 내가 좋아하는 뭔가를 지정해야 했 : id_type-> 이름이나 나는 그런 뭔가를 할 수 없어?

유형 (모델)

protected $guarded = array(); 
protected $table = 'type'; 
protected $fillable = array('name'); 

public function products(){ 
    return $this->belongsToMany('Product'); //Access the model Product. 
} 

브랜드 (모델)

protected $guarded = array(); 
protected $table = 'brand'; 
protected $fillable = array('name'); 

public function products(){ 
    return $this->belongsToMany('Product'); //Access the model Product. 
} 

ProductController

public function index() 
{ 
    $products = $this->product->all(); 
    return View::make('product.index', compact('product')); 
} 

질문 3 : I 제품보다 지정할 여기에 몇 가지 코드를 추가해야 했 얻을 id_type-> name과 id_brand-> 이름을 사용 하시거나 그냥 가지고 계신가요?

질문 : 내가해야 할 일은 무엇입니까? ¿ 내 jquery 데이터 테이블에서 id_type-> name과 id_brand-> 이름을 얻으려면? 필자는 피벗 테이블이 필요하고 모델과 컨트롤러에 몇 가지 코드를 사용합니까? 또는보기 product.blade에 유형 및 브랜드 이름을 직접 가져올 수 있습니까?

대단히 죄송합니다. 어떤 도움을 주셔서 감사합니다. 감사!

답변

1

나는 고급 MySQL 사용자가 아니지만 피벗 테이블이 필요 없다고 생각합니다. 테이블이 필요합니다 : productos, tipos 및 marcas.

"제품"모델에서 데이터에 액세스하는 경우이 관계를 Product.php : 에 추가해야합니다 (코드에 영어 또는 스페인어를 사용하는 경우 이해가되지 않습니다).자동으로 모든 쿼리에이 관계를로드해야하는 경우

public function type() 
{ 
    return $this->belongsTo('Type', 'type_id'); 
} 

public function brand() 
{ 
    return $this->belongsTo('Brand', 'brand_id'); 
} 

, 당신은이 속성을 추가해야합니다 쿼리를 만드는 대신 속성을 사용하여 $를 추가 할 때

public $with = ['type', 'brand']; 

그렇지 않은 경우, 당신은 지정할 수 있습니다 이 같은 :

Product::with(['type', 'brand'])->get(); 

은 그럼 당신은 할 수 있습니다 :

$products = Product::with(['type', 'brand'])->get(); 

그리고보기에서 16,:

@foreach($products as $product) 
    {{ $product->type->name }} 
    {{ $product->brand->name }} 
@endforeach 

내가 코드를 테스트, 그래서 그것을 사용하기 전에 그것을 확인하지 않았다!

Laravel 문서는 중대하다, 당신은 그것을 살펴 보셔야합니다 : http://laravel.com/docs/4.2/eloquent

+0

일이 첫 번째 시도에서 저예요, 당신의 도움과 시간에 대한 많은 감사합니다! –

관련 문제