dou426098 2016-03-16 17:26
浏览 33
已采纳

Laravel在点击路线时会创建数据库条目吗?

I'm still teaching myself laravel. I'm making an order form in laravel and i have a table full of products and i want to make it so that when make a new order and add the products. It would make its own order when i click new order it will make a new order number up and save it to the database?

Would the best way be to make an orders table with

Schema::create('westcoOrders', function (Blueprint $table){
        $table->increments('id');
        $table->string('orderNumber');
        $table->json('content');
        $table->tinyInteger('sent')->default(0);
        $table->tinyInteger('delivered')->default(0);
        $table->timestamps();
    } );

or would it be better having a table multiple tables so i have one like the one above without the json entry and then have a westcoOrderItems table like this?

Schema::create('westcoOrderItems', function (Blueprint $table){
        $table->string('orderNumber');
        $table->string('quantity');
        $table->string('productName');
        $table->string('productCode');
        $table->string('price');
        $table->timestamps();
    } );
}

So then i have link the order number to the other table. Or is that a long way to go around it? and if i do it that way i will have to find a way to make an order number when i hit the new order route?

I feel like I'm doing this the wrong/long way?

  • 写回答

1条回答 默认 最新

  • dongshang3309 2016-03-16 17:47
    关注

    In my opinion, something like the following would be better:

    // For orders
    Schema::create('orders', function (Blueprint $table){
        $table->increments('id');
        $table->tinyInteger('is_delivered')->default(0);
        $table->tinyInteger('is_paid')->default(0);
        $table->timestamps();
    });
    
    // For ordered_items (one order may contain many products/ordered_items)
    Schema::create('ordered_items', function (Blueprint $table){
        $table->increments('id')->unsigned();
        $table->integer('order_id')->unsigned(); // fk for order.id
        $table->string('quantity')->unsigned();
        $table->string('productName');
        $table->string('productCode');
        $table->decimal('price', 10, 2);
    });
    

    Then the models, for example:

    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Order extends Model {
    
        public function items()
        {
            return $this->hasMany('Item::class');
        }
    }
    

    The Item class for ordered_items:

    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Item extends Model {
    
        protected $table = 'ordered_items';
    
        public function order()
        {
            return $this->belongsTo(Order::class);
        }
    }
    

    Hope you got the idea. This is the simplest one.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 pnpm 下载element-plus
  • ¥15 解决编写PyDracula时遇到的问题
  • ¥15 有没有人能解决下这个问题吗,本人不会编程
  • ¥15 plotBAPC画图出错
  • ¥30 关于#opencv#的问题:使用大疆无人机拍摄水稻田间图像,拼接成tif图片,用什么方法可以识别并框选出水稻作物行
  • ¥15 Python卡尔曼滤波融合
  • ¥20 iOS绕地区网络检测
  • ¥15 python验证码滑块图像识别
  • ¥15 根据背景及设计要求撰写设计报告
  • ¥20 能提供一下思路或者代码吗