【发布时间】:2019-04-08 06:49:58
【问题描述】:
当我尝试使用 forget() 方法从集合中删除项目时出现错误:
调用未定义的方法 Illuminate\Database\Eloquent\Relations\HasManyThrough::forget()
我的模特City.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class City extends Model
{
public function rooms(){
return $this->hasManyThrough('App\Room','App\Object');
}
}
我的方法包含forget()
public function getSearchResults($request){
$request->flash();
if($request->input('city')!=null){
$result = $this->fR->getSearchResults($request->input('city'));
if($result){
foreach($result->rooms as $k=>$room)
{
if($request->input('room_size') > 0)
{
if($request->input('room_size') != $room->room_size)
{
$result->rooms()->forget($k);
}
}
}
return $result;
}
}
return false;
}
我能做些什么来解决它? 感谢您的帮助
【问题讨论】:
-
Forget 通常指缓存。你的意思是像
detatch这样的东西吗? -
我想排除与搜索结果不匹配的元素...忘记这种情况不好?
-
$result->rooms()看起来像一个关系查询。它不会忘记的。也许$result->rooms->forget($k)可能会起作用,因为那将是结果集合。 -
我认为你是对的。谢谢