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 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值