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')