Goods.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Author: 芸众商城 www.yunzshop.com
  5. * Date: 2017/2/22
  6. * Time: 下午18:16
  7. */
  8. namespace app\backend\modules\goods\models;
  9. use app\backend\modules\goods\observers\GoodsObserver;
  10. use Illuminate\Database\Eloquent\Builder;
  11. use Illuminate\Support\Facades\DB;
  12. use Yunshop\Producer\models\ProducerGoods;
  13. class Goods extends \app\common\models\Goods
  14. {
  15. public $widgets = [];
  16. public function hasOneProducerGoods()
  17. {
  18. return $this->hasOne(ProducerGoods::class, 'goods_id', 'id');
  19. }
  20. //todo 兼容后端模拟支付时,调用
  21. public function hasOneSale()
  22. {
  23. return $this->hasOne(\app\frontend\models\goods\Sale::class);
  24. }
  25. /**
  26. * 在boot()方法里注册下模型观察类
  27. * boot()和observe()方法都是从Model类继承来的
  28. * 主要是observe()来注册模型观察类,可以用TestMember::observe(new TestMemberObserve())
  29. * 并放在代码逻辑其他地方如路由都行,这里放在这个TestMember Model的boot()方法里自启动。
  30. */
  31. public static function boot()
  32. {
  33. parent::boot();
  34. //注册观察者
  35. static::observe(new GoodsObserver);
  36. // static::addGlobalScope(function (Builder $builder) {
  37. // $builder->isPlugin();
  38. // });
  39. }
  40. public function scopeGoods($query){
  41. return $query->select(['id','status','display_order','title','thumb','thumb_url','product_sn','market_price','price','cost_price']);
  42. }
  43. //根据商品ID获取商品名称
  44. public static function getGoodNameByGoodIds($goodIds){
  45. if(is_array($goodIds)){
  46. $res = static::uniacid()
  47. ->select('title')
  48. ->whereIn('id', $goodIds)
  49. ->orderByRaw(DB::raw("FIELD(id, ".implode(',', $goodIds).')')) //必须按照goodIds的顺序输出商品名称
  50. ->get()
  51. ->map(function($goodtitle){ //遍历
  52. return $goodtitle['title'];
  53. })
  54. ->toArray();
  55. } else{
  56. $res = static::uniacid()
  57. ->select('title')
  58. ->where('id', '=', $goodIds)
  59. ->first();
  60. }
  61. return $res;
  62. }
  63. public function getThumbAttribute($value)
  64. {
  65. return yz_tomedia($value);
  66. }
  67. }