Eloquent如果值为空,如何省略行

时间:2015-01-21 11:21:51

标签: database laravel mapping eloquent

我有三张桌子。

  1. 客户
  2. 产品
  3. 评论
  4. 我使用Eloquent映射这些表。

    例如,

    在客户详细信息的评论模型中,我的功能类似于

    public function customer(){
          return $this->belongsTo('Customer', 'customer_id');
    }
    

    对于产品详细信息,我的功能类似于

    public function product(){
          return $this->belongsTo('Product', 'product_id');
    }
    

    现在查询评论模型,如

    Review::all()->with(array('customer', 'product'))->get()
    

    返回值。那样就好。但是,如果删除了任何客户,则该行的值只是空的。相反,我需要省略该行。如何在laravel中做到这一点。

2 个答案:

答案 0 :(得分:0)

试试这个......也许在你的方法中添加where子句也可以。

$allReviews = Review::all()
   ->join('customers', 'reviews.customer_id', '=', 'customers.id')
   ->join('products', 'reviews.product_id', '=', 'products.id')
   ->where('customers.firstname','!=','') // given that there is a column firstname in table customers
   ->get()

答案 1 :(得分:0)

您可以使用has()过滤至少包含一个相关模型的模型:

Review::with('customer', 'product')->has('customer')->get();