我正在使用背包 CRUD包在 laravel 5.2 中创建我的网站项目
我想在两个表之间建立关系。第一个表称为客户,第二个表称为事务。每个客户都有许多交易(1:N 关系)。
客户表记录:
身份证名称
123456 xyz
交易表记录:
客户ID
101010 123456
我知道我必须在客户模型中指定关系。但是,如何在 CRUD 中显示关系的结果?
我正在使用背包 CRUD包在 laravel 5.2 中创建我的网站项目
我想在两个表之间建立关系。第一个表称为客户,第二个表称为事务。每个客户都有许多交易(1:N 关系)。
客户表记录:
身份证名称
123456 xyz
交易表记录:
客户ID
101010 123456
我知道我必须在客户模型中指定关系。但是,如何在 CRUD 中显示关系的结果?
您应该在 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 示例实体以更好地了解其工作原理。
首先,当您为两个表创建迁移时,包含外键 (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
]);
希望这可以帮助 :)
与事务建立单对多关系后,即可得到结果。
$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 关系文档总是很有帮助的。通过它。