【发布时间】:2018-03-14 19:16:18
【问题描述】:
我正在尝试制作一个应用程序,您可以在其中管理办公材料、发票等。所以我的订单有很多材料和一张发票。
我的材料表有:
id | name | count_all | count_current | price_unit
我的订单表有:
id | count_order | material_id | invoice_id
我的发票表有:
id | number | inc_date | scan_name | sum
我的材料模型看起来像:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Material extends Model
{
public function order(){
return $this->belongsTo('Order', 'material_id');
}
public function expenditure(){
return $this->belongsTo('Expenditure');
}
protected $fillable = [
'name', 'count_all', 'count_current', 'price_unit',
];
}
我的订单模型如下所示:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Order extends Model
{
public function invoice(){
return $this->hasOne('App\Invoice');
}
public function material(){
return $this->hasMany('App\Material');
}
protected $fillable = [
'count_order',
];
}
我的 OrderController 看起来像:
<?php
namespace App\Http\Controllers;
use App\order;
use Illuminate\Http\Request;
use DB;
use App\Http\Controllers\Controller;
class orderController extends Controller
{
/**
* Show a list of all of the application's orders.
*
* @return Response
*/
public function show()
{
$orders = DB::table('orders')->get();
return view('order', ['orders' => $orders]);
}
public function insert(Request $request){
$order = new order;
$order->count_order = $request->count_order;
$order->save();
return redirect('/order');
}
public function edit(order $order){
return view('edit_order', compact('order'));
}
public function update(Request $request, order $order){
if(isset($_POST['delete'])){
$order->delete();
return redirect('/order');
}
else{
$order->count_order = $request->count_order;
$order->save();
return redirect('/order');
}
}
}
因此,当尝试访问数据库时,我将在我的路线中使用功能“显示”。
还有我的一块“引起问题”的刀片:
<tbody>
@foreach($orders as $order)
<tr>
<td>{{$order->id}}</td>
<td>{{$order->material->name}}</td> //this is causing the Undefined property problem when trying to display material name instead of id
<td>{{$order->invoice_id}}</td> //this should look similar to the one above but since it doesn't work I didn't change it
<td>{{$order->count_order}}</td>
<td>
<form action="/order/{{$order->id}}">
<button type="submit" name="edit" class="btn btn-primary">Edycja zamówienia</button>
{{ csrf_field() }}
</form>
</td>
</tr>
@endforeach
</tbody>
因此,当我尝试在刀片中显示材质名称时(如上),它返回以下错误:
Undefined property: stdClass::$materials (View: C:\xampp\htdocs\laravel\petition_app\resources\views\order.blade.php)
【问题讨论】:
-
试试这段代码,只改先改而不是get,public function show() { $orders = DB::table('orders')->first();返回视图('order', ['orders' => $orders]); }
-
@parthu_panther 当我更改它时,我得到“尝试获取非对象的属性”
-
也在刀片文件中编辑这一行:-
{{$order->material[name]}} ' ->' 用于对象和 '[]'用于数组,由于您的查询结果是数组,因此您需要如上所述更改该行。