【问题标题】:laravel two table value compare , and show value in foreachlaravel 两个表值比较,并在 foreach 中显示值
【发布时间】:2020-12-10 19:53:45
【问题描述】:

laravel 比较两个表的值并在 foreach 中显示值。我的代码显示错误帮助我解决这个问题。

我正在比较两个模型中的“delete_status”,如果“供应商”模型 delete_status 是“NOT_DELETED”,它会计算 titem_list 模型“delete_status”的值,如果“NOT_DELETED”它将在 foreach 中显示项目,显示不显示项目。

我的控制器

public function  totalproduct()
{
    $totalproductlist = DB::table('item_lists')->join('suppliers', 'item_lists.delete_status', '=', 'suppliers.delete_status')->where('suppliers.delete_status','=','NOT_DELETED')->get();
    return view('suppliers.total-product',compact('totalproductlist'));        

}

我的模型(Item_list)

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Item_list extends Model
{
     protected $table = 'item_lists';
     protected $fillable = ['product_name','qty','purchase_rate','MRP_rate','sale_rate','supplier_name','part_no'];

}

我的模型(供应商)

<?php

namespace App;
use App\Purchase;
use Illuminate\Database\Eloquent\Model;

class Supplier extends Model
{
     protected $table = 'suppliers';
     protected $fillable = ['party_id','suppliers_master_id','suppliers_unic_id','supplier_name','email','phone','address','city','state','pincode','GSTIN','delete_status','BILL_TYPE'];

    public function items()
    {
        return $this->hasMany(Item_list::class, 'supplier_name', 'supplier_name');
    }
}

【问题讨论】:

  • @sta 检查我的控制器代码,我试图仅显示“NOT_DELETED”项目的值,但它显示了所有值。我不想显示“已删除”状态值

标签: laravel laravel-5


【解决方案1】:

您告诉 SQL 选择具有DELETED 状态的模型:

$totalproductlist = DB::table('item_lists')
  ->join('suppliers', 'item_lists.delete_status', '!=', 'suppliers.delete_status')
  ->where('suppliers.delete_status','=','DELETED')->get();
                                         ^^^^^^^

将其更改为仅选择 NOT_DELETED 就像更改字符串一样简单:

$totalproductlist = DB::table('item_lists')
  ->join('suppliers', 'item_lists.delete_status', '!=', 'suppliers.delete_status')
  ->where('suppliers.delete_status','=','NOT_DELETED')->get();
                                         ^^^^^^^^^^^

【讨论】:

  • 不工作检查我的控制器代码我试图只显示“NOT_DELETED”项目的价值,但它显示了所有价值。我不想显示“已删除”状态值
  • 答案是这么写的,你至少读过两个sn-ps吗?
【解决方案2】:

你定义了两个模型,基本上是为。但是您使用的是,而不是。你可以使用 whereHas() eloquent 方法,像这样:

$q = Supplier::whereHas("items", function ($query) {
        $query->where("delete_status", "NOT_DELETED");
   })
   ->where("delete_status", "NOT_DELETED")
   ->get();

【讨论】:

  • 必须在顶部添加use App\Item_list;,才能调用模型类
  • 调用未定义的方法 App\Item_list::suppliers()
  • 我拼错了,再试一次。
  • 在顶部添加use App\Supplier;
  • @user12931578 你能再澄清一下吗,你得到了什么你所期望的?
猜你喜欢
  • 2019-09-12
  • 2013-11-20
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-11
  • 1970-01-01
相关资源
最近更新 更多