I wanted to update a column in my model with a wherehas. However, I'm not sure how to do this. Here's my query below
$unused = Sale::whereHas('salesdetails',function($query) {
$query->where('product_id', '<=', 24)->where('switch', 1);
})->where(DB::raw("(DATE_FORMAT(transaction_date,'%Y-%m-%d'))"), '<', $now)->update(['switch' => 0]);
Sale Model
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Sale extends Model
{
protected $table = 'sales';
protected $primaryKey = 'id';
public $timestamps = false;
public function user()
{
return $this->belongsTo('App\User', 'member_id', 'id');
}
public function guest()
{
return $this->belongsTo('App\Guest', 'guest_id', 'id');
}
public function salesdetails()
{
return $this->hasOne('App\Sales_details','sales_id', 'id');
}
public function discount()
{
return $this->hasOne('App\Discount','id', 'discount_id');
}
}
Salesdetails Model
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Sales_details extends Model
{
protected $table = 'sales_details';
protected $primaryKey = 'id';
public $timestamps = false;
public function sale()
{
return $this->belongsTo('App\Sale', 'sales_id', 'id');
}
public function product()
{
return $this->belongsTo('App\Product', 'product_id');
}
}
In the query above, I want to update all the switches to '0' from the salesdetails relationship. How can I do this one?