2016-09-28 3 views
0

У меня есть две таблицы: product, product_namesКак использовать Регистрация в Laravel?

Product Product_names 
id  id | name | language | objectId 

Я использую функцию names() в модели, которая соединяет эти и таблицу key: id = objectId

Когда я запрос вроде как:

$arr = Product::with("names")->get(); 

Я получаю коллекцию объект из таблицы Product и разделенный coolection с names()

Как слить это в один результат коллекции?

Итак, мне нужно, чтобы получить что-то как:

$oneResultObject = SELECT Product_names.name AS name from Product LEFT JOIN Product_names ON Product_names.objectId = Product.id; 

Без использования ::with("Product_names")

ответ

0

Например:

product.php модель

class Product extends Model 
{ 
    protected $primaryKey = 'id'; 

    function productNames() { 
     return $this->hasOne('App\ProductName', 'id', 'objectId'); 
    } 

    public function show($id){ 
     self::with('productNames')->where('id', $id)->get(); 
    } 
} 

в ProductController.php

public function viewProduct($id, Product $products) 
    { 
     $product = $products->show($id); 
     return view('product', ['products' => $products]); 
    } 

в product.blade.php

<table> 
<tbody> 
@foreach ($products as $product) 
<tr> 
<th>{{ $product->id }}</th> 
<td>{{ $product->productNames->name }}</td> 
</tr> 
@endforeach 
</tbody> 
</table> 
</div> 

Надеемся, что это будет решить вашу проблему

+0

Откуда вы получили сообщение? – Babaev

+1

Почему я не могу использовать простой: '$ subcategories = Product :: with (" productNames ") -> get();'? – Babaev

+0

Опубликовать это ошибка, исправлено. Я написал все подробности. –

0
$products = DB::table('product') 
     ->leftJoin('product_names', 'product.id', '=', 'product_names.objectId ') 
     ->get(); 
+0

Не забудьте разработать свой код? –

0

Вы можете использовать Laravel в Query Builder (https://laravel.com/docs/5.3/queries#joins)

Для вашего вопроса, то здесь это является:

$prodcuts = DB::table('product') 
     ->leftJoin('product_names', 'product.id', '=', 'product_names.objectId ') 
     ->get(); 
Смежные вопросы