Php 如何从Laravel 5中的收藏中获取物品?
我是新来的Php 如何从Laravel 5中的收藏中获取物品?,php,laravel-5,Php,Laravel 5,我是新来的Laravel,我不知道如何从返回的集合中获取项目的值。这是我的密码: $aircraft = Aircraft::join('pams_shared.shared_aircraft', 'aircraft.shared_aircraft_id', '=', 'pams_shared.shared_aircraft.shared_aircraft_id') ->select('aircraft.*', 'shared_aircraft.*') -&
Laravel
,我不知道如何从返回的集合中获取项目的值。这是我的密码:
$aircraft = Aircraft::join('pams_shared.shared_aircraft', 'aircraft.shared_aircraft_id', '=', 'pams_shared.shared_aircraft.shared_aircraft_id')
->select('aircraft.*', 'shared_aircraft.*')
->where('aircraft.owner_id',Auth::user()->owner_id)
->where('registration',$reg)
->get();
我想从airpair.airpair\u id
中获取值,但这就是我被卡住的地方。我试过:
$id = $aircraft->aircraft_id;
$id = $aircraft->aircraft.aircraft_id;
我试过:
$id = $aircraft->aircraft_id;
$id = $aircraft->aircraft.aircraft_id;
我也试过:
$id = array_get($aircraft, 'aircraft_id');
但是我得到了null
作为一个值。当我执行var\u dump($aircraft)
或dd($aircraft)
时,我能够确认数据是否存在
在我看来,我可以通过循环访问该值,但我需要控制器中的这些数据来对另一个表执行第二次查询
希望这是有道理的。干杯
编辑
运行<代码>dd($飞机)时代码>我得到这个:
Collection {#239 ▼
#items: array:1 [▼
0 => Aircraft {#240 ▼
#fillable: array:8 [▶]
#table: "aircraft"
#primaryKey: "aircraft_id"
#connection: null
#perPage: 15
+incrementing: true
+timestamps: true
#attributes: array:16 [▼
"aircraft_id" => 5
"owner_id" => 2
"shared_aircraft_id" => 67443
"year" => 2012
"serial_number" => "C127RG3"
"registration" => "C-SMTH"
"created_by" => 2
"modified_by" => 2
"created_at" => "0000-00-00 00:00:00"
"updated_at" => "0000-00-00 00:00:00"
"aircraft_code" => "2072438"
"aircraft_mfr" => "CESSNA"
"aircraft_model" => "172RG"
"aircraft_type" => 4
"aircraft_eng" => 1
"aircraft_cat" => 1
]
#original: array:16 [▶]
#relations: []
#hidden: []
#visible: []
#appends: []
#guarded: array:1 [▶]
#dates: []
#casts: []
#touches: []
#observables: []
#with: []
#morphClass: null
+exists: true
}
]
}
当您对查询生成器使用get()
方法时,它将返回一个数组,无论它得到多少条记录。因此,您可以通过索引指向它来访问它。顺便说一句,不要忘记检查是否存在空白,以克服可能出现的错误
$id = 0;
$aircraft = Aircraft::join('pams_shared.shared_aircraft', 'aircraft.shared_aircraft_id', '=', 'pams_shared.shared_aircraft.shared_aircraft_id')
->select('aircraft.*', 'shared_aircraft.*')
->where('aircraft.owner_id',Auth::user()->owner_id)
->where('registration',$reg)
->get();
// now you can access properties
if(count($aircraft) > 0) $id = $aircraft[0]->aircraft_id;
如果使用get()
执行查询,您将始终得到一个集合作为结果。即使你只需要一个模型。最简单的更改方法是使用first()
:
我得到了这个错误:未定义的属性:illumb\Database\Eloquent\Collection::$aircraft.aircraft\u id
正如我所想,您没有那个属性。转储变量并发布结果以供查看。更新后的答案给了我以下错误:未定义的属性:Illumb\Database\Eloquent\Collection:$aircraft
我将发布我的变量转储。更新后的答案给了我以下错误:尝试获取非对象的属性
您应该删除第一部分,然后获得更新后的答案,因为这可能会让其他寻找正确答案的人感到困惑。干杯。如果您得到的是null
,那么您的查询不正确,或者您在db
中没有值。当我在视图中通过@foreach
循环运行$airpair
时,我确实得到了这些值……我想要我想要的一切,我使用视图中的所有结果,但我想要数组的特定部分(aircraft_id
)在转到我的视图之前在我的控制器中使用。您想要一个飞机模型还是查询可能返回多行?