【问题标题】:Relations in Laravel and How to show it in bladeLaravel 中的关系以及如何在刀片中显示它
【发布时间】:2019-03-22 23:42:20
【问题描述】:

我正在寻找构建发票系统的简单方法我想到了 Laravel,因为我知道一点 PHP 和 MySQL。 我无法理解如何在表之间创建关系并显示它。 例如: 我有桌子:

用户 -ID -用户名 ...

客户 -ID -姓名 -地址 ...

产品 -ID -姓名 -价格 ...

发票 -ID -client_id -> 外国 -user_id -> 外国 -数字 -product_id -> 外国

如何在 Laravel 中连接

用户有一些客户,这个客户有产品发票

并显示在发票列表中,用户可以为客户添加新发票等...

问候, 安德鲁

【问题讨论】:

标签: php mysql laravel


【解决方案1】:

从迁移命令开始

php artisan make:migration CreateProductsTable

在这里定义你的结构,它看起来像这样:

Schema::create('products', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('sku')->unique();
        $table->double('price');
        $table->timestamps();
    });

在这之后你需要创建一个模型:

php artisan make:model Product

这会在您的“App”文件夹中创建一个 Product.php 文件

    class Product
{

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'sku', 'price'
    ];

}

如果 $fillable 中未定义字段,您将无法发布该字段。

现在创建一个 ProductController

php artisan make:controller ProductController

这必须看起来像这样:

        class ProductController extends Controller
    {

        public function __construct()
        {
            //$this->middleware('auth');
        }

        public function index(Request $request) {
            $data = $request->all();

            $product= Product::create([
                'name' => $data['product_name'],
                'sku' => $data['product_sku'],
                'price' => $data['product_price'],
            ]);
        }
}

当然可以在products表中添加user_id等字段,设置不同表之间的关系。

【讨论】:

    【解决方案2】:

    注意:以下示例仅用于演示

    首先您需要在模型中建立关系类型

    例如:(一对多关系)Users & Products 表,一个用户可以购买许多产品,购买的产品只属于每个用户。

    所以它是 OneMany

    在您需要添加的 User.php 模型中

    public function products(){
        return $this->hasMany('App\Models\Product');
    }
    

    在您需要添加的 Product.php 模型中

    public function user(){
        return $this->belongsTo('App\Models\Product');
    }
    

    在获取用户时,您可以通过以下查询获取该用户的相关产品

    /* products inside with is the name of the function given in model */
    $usersDetails = Models\User::with('products')->get();
    

    现在用户将在查询中拥有带有 products 的键

    现在在blade中您可以通过以下方式访问产品

    @foreach($users as $user)
        {{ $user->firstname }} - {{ $user->lastname }}
    
        @foreach($user->product as $product)
            {{ $product->name }}
        @endforeach
    @endforeach
    

    【讨论】:

      【解决方案3】:
      return $this->belongsTo('App\Models\Product');
      

      但我认为您必须在此处将产品替换为用户才能访问产品。

      【讨论】:

        猜你喜欢
        • 2020-06-18
        • 1970-01-01
        • 2013-01-06
        • 1970-01-01
        • 2021-08-10
        • 1970-01-01
        • 2019-06-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多