Php 如何使用Pull从Laravel中的其他表中获取特定数据?
从Php 如何使用Pull从Laravel中的其他表中获取特定数据?,php,mysql,laravel,Php,Mysql,Laravel,从SalesController,我想从表Item中获取特定的name,并传递到HTML 我的控制器看起来像 public function index() { $items=Item::orderBy('name','ASC')->get()->pluck('name','id'); $sales=Sale::all(); return view('Sale.index')->with('sales',$sales,'items',$items); }
SalesController
,我想从表Item
中获取特定的name
,并传递到HTML
我的控制器看起来像
public function index()
{
$items=Item::orderBy('name','ASC')->get()->pluck('name','id');
$sales=Sale::all();
return view('Sale.index')->with('sales',$sales,'items',$items);
}
我的HTML是
<thead>
<tr>
<th>No</th>
<th>Name</th>
<th>Quantity</th>
<th>Total Price</th>
<th>Detail</th>
</tr>
</thead>
<tbody>
@foreach($sales as $sale)
<tr>
<td>{{ $sale->id }}</td>
<td>{{ $sale->items->name }}</td>
<td>{{ $sale->quantity }}</td>
<td>RM {{ $sale->price }}</td>
<td>{{ $sale->created_at }}</td>
</tr>
@endforeach
</tbody>
不
名称
量
总价
细节
@foreach(销售额为$sale)
{{$sale->id}
{{$sale->items->name}
{{$sale->quantity}
RM{{$sale->price}
{{$sale->created_at}
@endforeach
但我在尝试访问该页面后出现以下错误:
试图获取非对象的属性“name”(视图:C:\xampp\htdocs\inventoryApp\resources\views\Sale\index.blade.php)
直接使用$items
,而不使用sale
对象
直接使用$items
而不使用销售
对象有两种方法
1.使用关系
class Sale extends Model
{
public function item()
{
return $this->belongsTo('App\Item','item_id','id');
}
}
所以你可以像下面这样使用
<td>{{ $sale->item->name }}</td>
{{$sale->item->name}
2。使用阵列数据
public function index()
{
$items=Item::orderBy('name','ASC')->pluck('name','id')->toArray();
$sales=Sale::all();
return view('Sale.index')->with('sales',$sales,'items',$items);
}
<td>{{ $items[$sale->item_id] }}</td>
公共功能索引()
{
$items=Item::orderBy('name','ASC')->pull('name','id')->toArray();
$sales=Sale::all();
返回视图('Sale.index')->带有('sales',$sales,'items',$items);
}
{{$items[$sale->item_id]}
有两种方法
1.使用关系
class Sale extends Model
{
public function item()
{
return $this->belongsTo('App\Item','item_id','id');
}
}
所以你可以像下面这样使用
<td>{{ $sale->item->name }}</td>
{{$sale->item->name}
2。使用阵列数据
public function index()
{
$items=Item::orderBy('name','ASC')->pluck('name','id')->toArray();
$sales=Sale::all();
return view('Sale.index')->with('sales',$sales,'items',$items);
}
<td>{{ $items[$sale->item_id] }}</td>
公共功能索引()
{
$items=Item::orderBy('name','ASC')->pull('name','id')->toArray();
$sales=Sale::all();
返回视图('Sale.index')->带有('sales',$sales,'items',$items);
}
{{$items[$sale->item_id]}
如果您与餐桌销售有关系
将此函数添加到Sale类中
public function item()
{
return $this->belongsTo('App\Item');
}
在控制器中,您可以使用compact
public function index()
{
$items=Item::orderBy('name','ASC')->get();
$sales=Sale::all();
return view('Sale.index')->compact('sales','items');
}
您还可以使用“渴望加载”来加载HTML
<tbody>
@foreach($sales as $sale)
<tr>
<td>{{ $sale->id }}</td>
<td>{{ $sale->item->name }}</td>
<td>{{ $sale->quantity }}</td>
<td>RM {{ $sale->price }}</td>
<td>{{ $sale->created_at }}</td>
</tr>
@endforeach
</tbody>
@foreach(销售额为$sale)
{{$sale->id}
{{$sale->item->name}
{{$sale->quantity}
RM{{$sale->price}
{{$sale->created_at}
@endforeach
如果您与餐桌销售有关系
将此函数添加到Sale类中
public function item()
{
return $this->belongsTo('App\Item');
}
在控制器中,您可以使用compact
public function index()
{
$items=Item::orderBy('name','ASC')->get();
$sales=Sale::all();
return view('Sale.index')->compact('sales','items');
}
您还可以使用“渴望加载”来加载HTML
<tbody>
@foreach($sales as $sale)
<tr>
<td>{{ $sale->id }}</td>
<td>{{ $sale->item->name }}</td>
<td>{{ $sale->quantity }}</td>
<td>RM {{ $sale->price }}</td>
<td>{{ $sale->created_at }}</td>
</tr>
@endforeach
</tbody>
@foreach(销售额为$sale)
{{$sale->id}
{{$sale->item->name}
{{$sale->quantity}
RM{{$sale->price}
{{$sale->created_at}
@endforeach
出现此错误是因为您试图获取销售对象上不存在的item name属性。你可以简单地通过以下雄辩的关系做到这一点:
关于您的销售模式:
public function item()
{
return $this->belongsTo('App\Item','item_id');
}
在控制器上:
public function index()
{
$sales=Sale::all();
return view('Sale.index',compact('sales'));
}
然后在刀片上,您可以轻松获取相关的项目名称:
@foreach($sales as $sale)
<tr>
<td>{{ $sale->item->name }}</td>
</tr>
@endforeach
@foreach($sales as$sale)
{{$sale->item->name}
@endforeach
出现此错误是因为您试图获取销售对象上不存在的item name属性。你可以简单地通过以下雄辩的关系做到这一点:
关于您的销售模式:
public function item()
{
return $this->belongsTo('App\Item','item_id');
}
在控制器上:
public function index()
{
$sales=Sale::all();
return view('Sale.index',compact('sales'));
}
然后在刀片上,您可以轻松获取相关的项目名称:
@foreach($sales as $sale)
<tr>
<td>{{ $sale->item->name }}</td>
</tr>
@endforeach
@foreach($sales as$sale)
{{$sale->item->name}
@endforeach
销售和商品之间的关系是什么?您的概念不清楚。销售和商品之间有关系吗??如果是这样,您根本不需要获取项目集合。共享您的型号代码我删除了phpMyAdmin标记,因为这似乎与phpMyAdmin应用程序无关。销售和商品之间的关系是什么?您的概念不清楚。销售和商品之间有关系吗??如果是这样,您根本不需要获取项目集合。共享您的型号代码我删除了phpMyAdmin标记,因为这似乎与phpMyAdmin应用程序无关。您没有使用with('item')@phpdroid而没有使用with(),我们可以在视图中调用关系,那么单独发送$items
数组查看有什么用呢?我提到了两种方法,请检查我的回答。我尝试使用关系,它正在工作。非常感谢。这是否意味着我不需要在sale表中声明外键:$table->foreign('item_id')->references('id')->on('items')->onDelete('cascade')
u没有使用with('item')@phpdroid而没有使用with(),我们可以在视图中调用关系然后分别发送$items
数组来查看有什么用?我提到了两种方法,请检查我的回答我尝试使用关系,它正在工作。非常感谢。这是否意味着我不需要在sale表中声明外键:$table->foreign('item_id')->references('id')->on('items')->onDelete('cascade')代码>