Current File : /home/tradevaly/demo.tradevaly.com.bd/app/Models/Product.php |
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Product extends Model
{
use HasFactory;
//use SoftDeletes;
protected $fillable = [
'created_user_id', 'modified_user_id', 'deleted_user_id', 'company_id', 'is_service', 'show_type', 'is_trending', 'product_name', 'country_id', 'first_step_cat_id', 'second_step_cat_id',
'short_description', 'description', 'unit_id', 'size_id', 'color_id', 'feature_product_image', 'galleries', 'youtube_video',
'catelog_file', 'catelog_showable', 'tds_file', 'tds_showable', ' brand_ids', 'tentitive_delivery_days', 'status'
];
public function productCategoryDetails()
{
return $this->hasMany('App\Models\ProductCategoryDetail');
}
public function productPrice()
{
return $this->hasMany('App\Models\ProductPrice');
}
public function productInventory()
{
return $this->hasMany('App\Models\ProductInventory');
}
public function company()
{
return $this->belongsTo('App\Models\Company');
}
protected function getProductList($conditions = [])
{
$data = Product::where('status', 1)->pluck('product_name', 'id')->toArray();
return $data;
}
protected function getProductWithOthers( $selectProduct = [], $productCondition = [], $productLimit, $selectInventory = [], $inventoryCondition = [], $selectPrice = [], $priceCondition = [], $priceOrderBy = 'asc', $inventoryOrderBy = 'asc', $inventoryLimit = '')
{
//dd($productLimit);
$data = Product::select($selectProduct)
->where($productCondition)
->orderBy('id', 'desc')
->limit($productLimit)
->with (['productPrice' => function($mm) use ($selectPrice, $priceCondition, $priceOrderBy){
return $mm->select($selectPrice)
->where($priceCondition)
->orderBy('id', 'desc');
}])
->with (['productInventory' => function($mm) use ($selectInventory, $inventoryCondition, $inventoryOrderBy){
return $mm->select($selectInventory)
->where($inventoryCondition)
->orderBy('id', 'desc');
}]);
return $data;
}
}