Просмотр исходного кода

采购管理-添加用户供应商中间表

haozi 5 лет назад
Родитель
Сommit
eab181c23c

+ 18 - 0
app/Procurement.php

@@ -3,9 +3,12 @@
 namespace App;
 
 use App\Traits\ModelTimeFormat;
+use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Database\Eloquent\Model;
 
 use App\Traits\ModelLogChanging;
+use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\DB;
 
 class Procurement extends Model
 {
@@ -35,6 +38,21 @@ class Procurement extends Model
         'code','owner_material_id', 'supplier_id', 'quantity','amount','unit_price','cost_price','status','initiator','type'
     ];
 
+    protected static function booted()
+    {
+        /** @var User $user */
+        $user = Auth::user();
+        if ($user && !$user->isSuperAdmin()) {
+            /** @var \stdClass $user */
+            $ids = array_column(DB::select(DB::raw("SELECT supplier_id FROM supplier_user WHERE user_id = ?"),[$user->id]),"supplier_id");
+            if (count($ids)>0){
+                static::addGlobalScope('supplier', function (Builder $builder)use ($ids) {
+                    $builder->whereIn('supplier_id',  $ids);
+                });
+            }
+        }
+    }
+
     public  function ownerMaterial(){
         return $this->hasOne('App\OwnerMaterial','id','owner_material_id');
     }

+ 31 - 0
database/migrations/2021_03_01_140330_create_supplier_user_table.php

@@ -0,0 +1,31 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateSupplierUserTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('supplier_user', function (Blueprint $table) {
+            $table->bigInteger("user_id")->comment("外键用户");
+            $table->bigInteger("supplier_id")->comment("外键供应商");
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('supplier_user');
+    }
+}