我无法从数据库中获取HasOne数据。我能怎么做?
我可以得到其他数据。
控制器;
<table>
<tr>
<td>
<span class="jdName">Some Name with more characters</span>
</td>
</tr>
</table>
<div class="test-div">
<span class="jdName">Some Name with more characters</span>
</div>
用户模型;
$gelensunucu = Request::get('gelensunucu');
$gelenrol = Request::get('gelenrol');
$gelenkume = Request::get('gelenkume');
$veriler = DB::table('users')
->select(DB::raw("*"))
->where('kume_id', '=', $gelenkume)
->where('rol_id', '=', $gelenrol)
->where('sunucu_id', '=', $gelensunucu)
->get();
return view('home')->with('veriler', $veriler);
其他型号;
protected $fillable = [ 'sunucu_id', 'rol_id', 'kume_id', 'tecrube' ...]
public function kumeler()
{
return $this->hasOne('App\kumeler','id','kume_id');
}
public function roller()
{
return $this->hasOne('App\roller','id','rol_id');
}
public function sunucular()
{
return $this->hasOne('App\sunucular','id','sunucu_id');
}
未定义的属性:stdClass :: $ sunucular(0)
答案 0 :(得分:0)
仅在使用模型`@JsonTypeInfo(use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.EXISTING_PROPERTY,
property = "type",
visible = false)
@JsonSubTypes(@JsonSubTypes.Type(value = Dog.class, name = "dog"))`
时才能访问关系。现在,您正在拨打以下电话:
User
此查询的结果是$veriler = DB::table('users')...->get();
个对象的Collection
,而不是stdClass
个模型实例的Collection
。因此,您不能调用类似User
之类的东西,因为默认的$user->sunucular
对象没有名为stdClass
的属性/方法。要解决此问题,请使用您的sunucular
模型:
User
此外,请确保您的用户是在控制器中导入的属性:
$veriler = User::where('kume_id', '=', $gelenkume)
->where('rol_id', '=', $gelenrol)
->where('sunucu_id', '=', $gelensunucu)
->get();
// Note:: You don't need to call `->select(DB::raw("*"))`; it's redundant.
或通过名称空间访问:
user App\User;
无论哪种方式,现在您将拥有$veriler = \App\User::...->get();
个模型实例中的Collection
个,它们具有可用的关系。
总而言之,如果要访问关系,则不能使用User
;它们是在DB::table()
模型上定义的,需要以允许访问的方式进行查询。