SpecValue.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace app\admin\model\shop;
  3. use think\Model;
  4. class SpecValue extends Model
  5. {
  6. // 表名
  7. protected $name = 'shop_spec_value';
  8. // 自动写入时间戳字段
  9. protected $autoWriteTimestamp = 'int';
  10. // 定义时间戳字段名
  11. protected $createTime = 'createtime';
  12. protected $updateTime = 'updatetime';
  13. protected $deleteTime = false;
  14. // 追加属性
  15. protected $append = [];
  16. //添加属性
  17. public static function push($values, $spec)
  18. {
  19. $data = [];
  20. foreach ($values as $item) {
  21. // 兼容旧格式(字符串)和新格式(对象)
  22. $value = is_array($item) ? $item['name'] : $item;
  23. $image = is_array($item) ? ($item['image'] ?? '') : '';
  24. $desc = is_array($item) ? ($item['description'] ?? '') : '';
  25. $specValue = self::where('value', $value)->where('spec_id', $spec->id)->find();
  26. if (!$specValue) {
  27. $specValue = new self();
  28. $specValue->save([
  29. 'value' => $value,
  30. 'spec_id' => $spec->id,
  31. 'image' => $image,
  32. 'desc' => $desc
  33. ]);
  34. } else {
  35. // 更新图片和描述(如果有新数据)
  36. $updateData = [];
  37. if ($image && $specValue->image !== $image) {
  38. $updateData['image'] = $image;
  39. }
  40. if ($desc && $specValue->desc !== $desc) {
  41. $updateData['desc'] = $desc;
  42. }
  43. if (!empty($updateData)) {
  44. $specValue->save($updateData);
  45. }
  46. }
  47. $data[] = [
  48. 'spec_id' => $spec->id,
  49. 'spec_name' => $spec->name,
  50. 'spec_value_id' => $specValue->id,
  51. 'spec_value_value' => $specValue->value
  52. ];
  53. }
  54. return $data;
  55. }
  56. }