1

我正在使用背包 CRUD包在 laravel 5.2 中创建我的网站项目

我想在两个表之间建立关系。第一个表称为客户,第二个表称为事务。每个客户都有许多交易(1:N 关系)。

客户表记录:

身份证名称

123456 xyz

交易表记录:

客户ID

101010 123456

我知道我必须在客户模型中指定关系。但是,如何在 CRUD 中显示关系的结果?

4

3 回答 3

4

您应该在 Transaction 和 Customer 模型上都有关系,因此您可以执行$customer->transactions以下操作$transaction->customer

class Customer extends Model
{
    /**
     * Get the comments for the blog post.
     */
    public function transactions()
    {
        return $this->hasMany('App\Transactions', 'CustomerID', 'ID');
    }
}

class Transaction extends Model
{
    /**
     * Get the comments for the blog post.
     */
    public function customer()
    {
        return $this->belongsTo('App\Customer', 'CustomerID', 'ID');
    }
}

花一些时间阅读 Eloquent 关系文档。如果您想成为 Laravel 开发人员,了解它们非常重要。

为了在 CRUD 中显示关系,您可以使用 Backpack 的选择列类型将其显示在表视图中,并选择选择 2字段类型以将其显示在添加/编辑视图中。阅读CRUD 示例实体以更好地了解其工作原理。

于 2016-08-27T05:15:06.330 回答
1

首先,当您为两个表创建迁移时,包含外键 (FK) 的表必须具有如下字段:

public function up(){
   $table->increments('id');
   $table->integer('customerID')->unsigned();
}

之后,您需要在控制台中调用下一个命令

php artisan migrate

接下来是下一个命令:

php arisan backpack:crud customers
php arisan backpack:crud transactions

之后,您需要在模型中定义从其他表返回值的函数。客户模型需要具有下一个功能

public function transactions(){
   return $this->hasMany('Transaction');
}

事务模型必须有下一个函数

public function customer() {
    return $this->belongsTo('Customer');
}

接下来,您必须在客户控制器中添加 CRUD 字段以在选择框中显示交易。

$this->crud->addField([
   'label' => 'Transactions', // Label for HTML form field
   'type'  => 'select2',  // HTML element which displaying transactions
   'name'  => 'customerID', // Table column which is FK for Customer table
   'entity'=> 'customer', // Function (method) in Customer model which return transactions
   'attribute' => 'ID', // Column which user see in select box
   'model' => 'Transaction' // Model which contain FK
]);

希望这可以帮助 :)

于 2016-09-01T17:37:33.963 回答
0

与事务建立单对多关系后,即可得到结果。

$customer=Customer::where(['id'=>'123456'])->with('transaction')
                                           ->first();

print_r($customer->Name);  // gives the customer name
foreach($customer->transaction as $cid)
{
     print_r($cid->CustomerID);       // gives the customer id
}

Laravel 关系文档总是很有帮助的。通过它。

于 2016-08-27T05:32:06.400 回答