Mex*_*reg 1 laravel eloquent laravel-5 laravel-query-builder
早上好,尝试用Eloquent创建一个简单查询时遇到麻烦。
这是mi Colonia模型:
class Colonia extends Model
{
protected $table = 'catalogo_colonias';
public function city()
{
return $this->belongsTo('App\City', 'ciudades_id');
}
}
Run Code Online (Sandbox Code Playgroud)
如果我做。
$response = Colonia::find(1)->city;
Run Code Online (Sandbox Code Playgroud)
我正在得到答复,但我不想通过id查找,我正在尝试做出这样的事情。
$response = Colonia::where('codigo_postal', $codigo_postal)->city;
Run Code Online (Sandbox Code Playgroud)
但这给我一个错误。
未定义的属性:Illuminate \ Database \ Eloquent \ Builder :: $ city
如您所见,它已在上面声明,我想这是一个语法问题,希望对您有所帮助。
谢谢你,问候。
当您这样做时:
$response = Colonia::find(1)->city;
Run Code Online (Sandbox Code Playgroud)
该find()方法将返回查询结果,在这种情况下为catalogo_colonias表的第一个对象。一个对象,该对象具有您定义的所有属性,例如city关系。
现在,当您改用where()方法时,它仍未检索到关系对象,因为在某些情况下,您将希望继续限制查询。而是返回查询生成器类的实例。这就是为什么它会引发错误:
$response = Colonia::where('codigo_postal', $codigo_postal) // return query builder
->city; // this property isn't defined in the builder, hence, the error.
Run Code Online (Sandbox Code Playgroud)
要获取结果,您需要附加get()(以获取与查询匹配的所有结果)或first()或等等。
$response = Colonia::where('codigo_postal', $codigo_postal) // query builder
->first() // returns an instance of Colonia
->city; // now it can access the model properties.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |