如何将数据传递到Laravel中的相关表?

时间:2016-09-28 12:33:06

标签: laravel laravel-5.2 laravel-5.3

我有模特:

class Product extends Model
{
   public function translate()
    {
        return $this->hasMany("App\ProductTranslate", "objectId", "id")->where('language', self::$language);
    }
}

当我向表Product添加数据时,我应该将数据添加到相关表ProductTranslate

我尝试这样做:

$product = new Product();
$product->title = "Name";
$product->translate()->name = "Value"

3 个答案:

答案 0 :(得分:0)

你有hasMany关系,所以当你打电话:

$product->translate()->get()

$product->translate

您将获得 Eloquent Collection App\ProductTranslate类型的对象,因此您可以像这样对它们进行迭代:

$product = new Product();
$product->title = "Name";
foreach ($product->translate as $translation) {
   $translation->name = "Value";
}

答案 1 :(得分:0)

尝试此操作以插入相关模型。

$product = new Product();
$product->title = "Name";
$product->save();

$product->translate()->create([
    'name' => 'Value'
]);

此外,文档非常擅长描述如何在此处附加相关模型。 https://laravel.com/docs/5.3/eloquent-relationships#inserting-and-updating-related-models

答案 2 :(得分:0)

将对象存储在数组中,然后将数组传递给视图

$all_data = array()
for($i=0; $i< count($product); $i++)
{
  $product = new Product();
  $product->title = "Name";
  $product->translate()->name = "Value";

  $all_data[$i] = $product;
}

将数据传递给控制器​​

查看
return view('admin.page')->with('all_data', $all_data)

UI部分

<table id="table-data" class="table table-bordered table-striped">
  <thead>
    <tr>
      <th width="5%" class="text-center">No.</th>
      <th>Name</th>
    </tr>
  </thead>
  <tbody>
    <?php $i = 1; ?>
    @foreach($all_data as $data)
      <tr>
        <td width="5%"><?php echo $i; ?></td>
        <td>{{ $data->name }}</td>       
      </tr> 
    <?php $i++; ?>
    @endforeach    
  </tbody>
</table>