在PHP-MySQL中,我可以创建此查询...
$sql = "SELECT * FROM product";
$result = $conn->query($,con, $sql);
while($row =mysql_fetch_array($result)){
$sqlquantity = "SELECT * FROM quantity where branchid='4' and productid='$row['productid']'";
$resultquantity = $conn->query($,con, $sqlquantity);
if (mysqli_num_rows($resultquantity) == 0) {
echo $row['productname']. "not available in branch"
}
else {
echo $row['productname']. "available in branch"
}
}
但是如何使用Laravel做到这一点?
我有3张桌子
+-----------------+ +-----------------+ +----------------+
| product table | | quantity table | | branch table |
+-----------------+ +-----------------+ +----------------+
| id | | productid | | id |
| productname | | branchid | | branchname |
+-----------------+ | quantity | +----------------+
+-----------------+
我的问题是我试图创建一个model
,view
和controller
,在其中可以显示每个{{ 1}}基于products
表。有人可以帮忙吗?
产品型号
branch
数量模型
quantity
分支模型
public function quantity()
{
return $this->hasMany('App\Quantity', 'productid', 'id');
}
我要创建的是,如果public function product()
{
return $this->belongsTo('App\Product', 'productid', 'id');
}
不存在,则可以查看public function products()
{
return $this->hasMany('App\Quantity', 'branchid', 'id');
}
表branch
product
。
答案 0 :(得分:1)
您也可以尝试这个...
请检查Official Docs上的多对多关系以获取更好的解释。
您无需创建Quantity
模型,因为它可以用作pivot
和Product
模型之间的Branch
或联接表(不是实体)。由于您具有自定义数据透视表名称quantity
,因此需要将其传递给第二个参数,否则Eloquent会自动为您创建一个branch_product
表名称(字母顺序)。第三个和第四个参数分别是当前模型和联接模型的外键。
产品型号
public function branches()
{
return $this->belongsToMany('App\Branch', 'quantity', 'productid', 'branchid')
->withPivot('quantity'); //additional pivot column
}
分支模型
public function products()
{
return $this->belongsToMany('App\Product', 'quantity', 'branchid', 'productid')
->withPivot('quantity');
}
产品负责人
$products = Product::all();
if($products){
$x = 0;
foreach ($products as $prod) {
$products[$x] = $prod->branches()
// ->wherePivot('productid', '=', $prod->id)
->wherePivot('branchid', '=', 4)
->wherePivot('quantity', '=', 0)
->get();
$x++;
}
}
return response(['products' => $products],200);
//get all the products in branch 4 with quantity = 0
然后,您可以执行条件if
来确定它是否可用。
答案 1 :(得分:0)
您可以使用whereHas()
这样的方法:
Product::whereHas( 'Quantity', function($sQuery){
$sQuery->where('branchid', 4);
})->get();