Laravel 在到达路线时创建数据库条目?

Posted

技术标签:

【中文标题】Laravel 在到达路线时创建数据库条目?【英文标题】:Laravel create database entery when hitting a route? 【发布时间】:2016-07-02 18:02:45 【问题描述】:

我仍在自学 laravel。我正在 laravel 中制作订单,我有一张装满产品的桌子,我想制作它,以便在下一个新订单并添加产品时。当我点击新订单时,它会自己下订单,它会创建一个新的订单号并将其保存到数据库中?

最好的方法是制作一个订单表

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();
     );

或者最好有一个表多个表,所以我有一个像上面没有 json 条目的表,然后有一个这样的 westcoOrderItems 表?

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

然后我将订单号链接到另一个表。或者这是一个很长的路要走? 如果我这样做,当我点击新的订单路线时,我将不得不找到一种方法来制作订单号?

我觉得我做错了/很长的路要走?​​p>

【问题讨论】:

【参考方案1】:

在我看来,像下面这样会更好:

// 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);
);

然后是模型,例如:

namespace App;

use Illuminate\Database\Eloquent\Model;

class Order extends Model 

    public function items()
    
        return $this->hasMany('Item::class');
    

ordered_itemsItem 类:

namespace App;

use Illuminate\Database\Eloquent\Model;

class Item extends Model 

    protected $table = 'ordered_items';

    public function order()
    
        return $this->belongsTo(Order::class);
    

希望你明白了。这是最简单的。

【讨论】:

谢谢 这就是我想要的。现在唯一的另一件事是当我想创建新订单时,我将如何创建新订单输入?? 欢迎您!好吧,你可以使用 'Order.create()' 或 laravel 提供的其他方式。 好的,谢谢,我会用它。我会让你知道我过得怎么样 我已经完成了它的所有工作但是.. 我不能使用retrun $this->belongsTo(westcoOrders::class); 因为它会出现这个错误syntax error, unexpected '$this' (T_VARIABLE) 你有语法错误,检查正确,也试试retrun $this->belongsTo('\App\westcoOrders');类似语法。

以上是关于Laravel 在到达路线时创建数据库条目?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel,Mysql重复条目

在 laravel 中使用不同的 ID 显示路线

Laravel:创建资源路线会导致工匠错误

php Laravel的Toastr通知,用于创建/删除条目

Laravel 路由没有到达控制器

Laravel 使用 destroy 方法删除条目