我正试图在我雄辩的模型上提供额外的静态“查找”方法,如下所示:
public static function findBySku($sku)
{
// Using new self; provides the same empty collection results
$instance = new static;
// Using $instance->sku()->newQuery()->get() also returns the same empty collection
$results = $instance->sku()->get();
/*
* This returns an empty collection, however there are records inside the
* relationship database table?
*/
dd($results);
}
所以我可以使用:Inventory::findBySku($sku);
这是关系:
public function sku()
{
return $this->hasOne('Stevebauman\Maintenance\Models\InventorySku', 'inventory_id', 'id');
}
我知道关系本身不是问题,因为这会从数据库表中返回结果:
Inventory::find(1)->sku()->get();
任何人都有任何想法为什么这不起作用?
我知道这可能是因为我从一个静态实例调用一个非静态方法,但是为什么它会返回一个结果集合而不会抛出错误?
谢谢!
答案 0 :(得分:2)
坚持下去,想通了,道歉!
Eloquent关系有一个方法getRelated()
来访问相关的模型实例。然后我可以调用我需要的方法,例如:
public static function findBySku($sku)
{
$instance = new static;
// Using the getRelated() method allows me to run queries on the related model
$results = $instance->sku()->getRelated()->get();
dd($results);
}
只是一种奇怪的解决方法,因为您认为访问关系本身会为您提供正确的查询。
我希望将来帮助某人!