2015-10-27 3 views
2

У меня есть две таблицы: products и requests, сводную requests_products, что сохранить products_id, requests_id и два других информацию.Работа с поворотным столом, чтобы получить доступ к другой информации таблицы

я и еще одна таблица называется requests_observations, что сохранить и наблюдения для этого продукта в этой запросу.

В моей модели Просьбы у меня есть belongsToMany на продукты

/** 
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany 
*/ 
public function products() 
{ 
    return $this->belongsToMany('App\Products', 'requests_products')->withTimestamps(); 
} 

Но что мне нужно сделать, это добавить замечание для requests_products_id, у меня есть модель для этой таблицы, но я не» t знаю, где я положил hasMany, в категории Продукты или запросы.

спасибо.

Update

Модель продукта

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Products extends Model 
{ 
    /** 
    * @return \Illuminate\Database\Eloquent\Relations\BelongsTo 
    */ 
    public function category() 
    { 
     return $this->belongsTo('App\Categories', 'categories_id'); 
    } 

    /** 
    * @return \Illuminate\Database\Eloquent\Relations\BelongsTo 
    */ 
    public function fileUpload() 
    { 
     return $this->belongsTo('App\FileUpload', 'file_upload_id'); 
    } 

    /** 
    * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany 
    */ 
    public function ingredients() 
    { 
     return $this->belongsToMany('App\Ingredients', 'products_ingredients')->withTimestamps(); 
    } 
} 

предлагает модель

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Requests extends Model 
{ 
    /** 
    * @return \Illuminate\Database\Eloquent\Relations\BelongsTo 
    */ 
    public function board() 
    { 
     return $this->belongsTo('App\Boards', 'boards_id'); 
    } 

    /** 
    * @return \Illuminate\Database\Eloquent\Relations\BelongsTo 
    */ 
    public function status() 
    { 
     return $this->belongsTo('App\Status', 'status_id'); 
    } 

    /** 
    * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany 
    */ 
    public function products() 
    { 
     return $this->belongsToMany('App\Products', 'requests_products')->withTimestamps(); 
    } 
} 

requests_products

mysql> SHOW COLUMNS FROM requests_products; 
+-------------+------------------+------+-----+---------------------+----------------+ 
| Field  | Type    | Null | Key | Default    | Extra   | 
+-------------+------------------+------+-----+---------------------+----------------+ 
| id   | int(10) unsigned | NO | PRI | NULL    | auto_increment | 
| requests_id | int(10) unsigned | NO | MUL | NULL    |    | 
| products_id | int(10) unsigned | NO | MUL | NULL    |    | 
| unity_price | decimal(10,2) | NO |  | NULL    |    | 
| quantity | int(11)   | NO |  | NULL    |    | 
| total_price | decimal(10,2) | NO |  | NULL    |    | 
| created_at | timestamp  | NO |  | 0000-00-00 00:00:00 |    | 
| updated_at | timestamp  | NO |  | 0000-00-00 00:00:00 |    | 
+-------------+------------------+------+-----+---------------------+----------------+ 

requests_observations

mysql> SHOW COLUMNS FROM requests_observations; 
+----------------------+------------------+------+-----+---------------------+----------------+ 
| Field    | Type    | Null | Key | Default    | Extra   | 
+----------------------+------------------+------+-----+---------------------+----------------+ 
| id     | int(10) unsigned | NO | PRI | NULL    | auto_increment | 
| requests_products_id | int(10) unsigned | NO | MUL | NULL    |    | 
| observation   | text    | NO |  | NULL    |    | 
| created_at   | timestamp  | NO |  | 0000-00-00 00:00:00 |    | 
| updated_at   | timestamp  | NO |  | 0000-00-00 00:00:00 |    | 
+----------------------+------------------+------+-----+---------------------+----------------+ 

Я хотел бы знать, как правильно вставить замечание из requests_products_id и как я могу получить эту информацию позже.

Спасибо!

ответ

0

я решил мою проблему с некоторыми изменениями в моем коде.

Я использовал $hidden в моей просьбе и продуктов моделей, и я спрятала стержень. Это позволило мне вызвать параметр pivot, когда я обращался к свойству модели.

Я также сделал то, что Marco Feregrinoanswer, я добавил в моем Request.php продукты() функционируют возможность определить, шарниры из этих отношений.

public function products() 
{ 
    return $this->belongsToMany('App\Products', 'requests_products')->withPivot('id', 'unity_price', 'quantity', 'total_price')->withTimestamps(); 
} 

Моя последняя переменная $ скрыт является protected $hidden = ['created_at', 'updated_at'];

В моей products.php мне не нужно ничего менять.

Теперь, чтобы работать со стержнем, мне просто нужно найти правильный продукт, с просьбой.

$productRequest = $request->products()->find($productInformation->id); 

// Create the RequestsObservations instance 
$requestsObservations = new RequestsObservation(); 
$requestsObservations->requests_products_id = $productRequest->pivot->id; 
$requestsObservations->observation = $productInformation->observation; 
$requestsObservations->save(); 
1

1 Режим Это многие ко многим // Модель просит

public function products() 
{ 
    return $this->belongsToMany(Product::class()); 
} 
//model Products 
public function request() 
{ 
    return $this->belongsToMany(ModelRequest::class()); 
} 

, если у вас есть requests_observations таблицы и имеет больше atrributes вам нужно сделать другие модели RequestsObservations и изменить его, как нормальная модель

2d-режим По умолчанию на поворотном объекте будут присутствовать только ключи модели. Если сводная таблица содержит дополнительные атрибуты, необходимо указать их при определении отношения:

return $this->belongsToMany('App\Role')->withPivot('column1', 'column2'); 

http://laravel.com/docs/5.1/eloquent-relationships#many-to-many

+0

Я обновил мой вопрос, я добавил свои модели и базы данных, я считаю, что то, что вы ответите, я уже сделал, просто нужно знать, как реализовать requests_observations в этой архитектуре. Благодаря! –

Смежные вопросы