我有一个数据库的结构:
products(id, name, description, SKU, price, current_stock) <br/>
orders(id, date,name, description, product_SKU, price, current_stock)
字符串
在顺序控制器我有
CRUD::field([
'type'=>'select2',
'name'=>'product_name',
'label'=>'Product Name',
'model'=>'App\Models\Products',
'attribute'=>'name',
'allows_null'=>true,
'entity'=>'productrelation',
]);
CRUD::field([
'type'=>'text',
'name'=>'product_sku',
'label'=>'Product SKU',
'attributes' => [
'readonly' => true,
],
'entity' => 'productrelation',
'attribute' => 'sku',
'depends_on' => [
'product_name' => '!=null',
],
'value' => function($crud) {
$product= \App\Models\Products::where('product_name', $crud->getRequest()->input('product_name'))->first();
return $product ? $product->sku : '';
}
]);
型
选择产品名称后,应使用产品数据库中的数据填充字段product_SKU
、price
和current_stock
(此字段是只读的)。product_name
字段可以很好地显示所有产品名称,但问题是我不知道如何填充其他字段。我试着将值设置为一个函数,该函数应该基于在product_name
上选择(我认为这是正确的),但它不检索字符串,并抛出错误。
1条答案
按热度按时间vmjh9lq91#
如果您希望当有人在Orders中选择某个
product
时,product_SKU
,price
和current_stock
字段被完成,您应该能够在JS中使用CrudField JS API完成。您将需要:请查看分步指南。
作为个人意见...对于像你这样的关系,我不会使用这样的自定义字段,但是
relationship
字段,它也允许子字段。换句话说:如果一个订单可以有多个产品,当我打开一个“订单”时,我希望能够..选择多个产品。
我会发现这更直观,而且你可以很容易地实现这一点,不需要自定义代码,使用
relationship
字段和子字段。希望有帮助!