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 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办