我有两张桌子:product, product_names
Product Product_names
id id | name | language | objectId
我在模型中使用函数names()
,通过key: id = objectId
当我提出要求时:
$arr = Product::with("names")->get();
我从表Product
获取对象的集合,并用names()
如何在一个集合结果中合并?
所以,我需要得到一些东西:
$oneResultObject = SELECT Product_names.name AS name from Product LEFT JOIN Product_names ON Product_names.objectId = Product.id;
不使用::with("Product_names")
答案 0 :(得分: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]);
}
in product.blade.php
<table>
<tbody>
@foreach ($products as $product)
<tr>
<th>{{ $product->id }}</th>
<td>{{ $product->productNames->name }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
希望这可以解决您的问题
答案 1 :(得分:0)
$products = DB::table('product')
->leftJoin('product_names', 'product.id', '=', 'product_names.objectId ')
->get();
答案 2 :(得分:0)