我有两种模式:帐户:
<?php
namespace App\Models;
class Account extends \Illuminate\Database\Eloquent\Model
{
public function user()
{
return $this->belongsTo('\App\Models\User');
}
}
..和用户:
<?php
namespace App\Models;
class User extends \Illuminate\Database\Eloquent\Model
{
public function accounts()
{
return $this->hasMany('\App\Models\Account');
}
}
现在,当我执行以下操作时 - var_dump(\App\Models\User::find(1)->accounts());
- 我返回了Illuminate \ Database \ Eloquent \ Relations \ HasMany实例,但它不包含我对该用户ID的帐户。我可以确认我的帐户表确实有几行user_id设置为1.有什么我做错了吗?我按照文档进行操作,看不出有什么不同。
以下是var_dump(\App\Models\User::find(1)->accounts());
的输出,如果有用的话:
object(Illuminate\Database\Eloquent\Relations\HasMany)[67] protected 'foreignKey' => string 'accounts.user_id' (length=16) protected 'localKey' => string 'id' (length=2) protected 'query' =>
object(Illuminate\Database\Eloquent\Builder)[71]
protected 'query' =>
object(Illuminate\Database\Query\Builder)[72]
protected 'connection' =>
object(Illuminate\Database\MySqlConnection)[59]
...
protected 'grammar' =>
object(Illuminate\Database\Query\Grammars\MySqlGrammar)[61]
...
protected 'processor' =>
object(Illuminate\Database\Query\Processors\MySqlProcessor)[62]
...
protected 'bindings' =>
array (size=5)
...
public 'aggregate' => null
public 'columns' => null
public 'distinct' => boolean false
public 'from' => string 'accounts' (length=8)
public 'joins' => null
public 'wheres' =>
array (size=2)
...
public 'groups' => null
public 'havings' => null
public 'orders' => null
public 'limit' => null
public 'offset' => null
public 'unions' => null
public 'lock' => null
protected 'backups' =>
array (size=0)
...
protected 'cacheKey' => null
protected 'cacheMinutes' => null
protected 'cacheTags' => null
protected 'cacheDriver' => null
protected 'operators' =>
array (size=19)
...
protected 'model' =>
object(App\Models\Account)[57]
protected 'fillable' =>
array (size=3)
...
protected 'connection' => null
protected 'table' => null
protected 'primaryKey' => string 'id' (length=2)
protected 'perPage' => int 15
public 'incrementing' => boolean true
public 'timestamps' => boolean true
protected 'attributes' =>
array (size=0)
...
protected 'original' =>
array (size=0)
...
protected 'relations' =>
array (size=0)
...
protected 'hidden' =>
array (size=0)
...
protected 'visible' =>
array (size=0)
...
protected 'appends' =>
array (size=0)
...
protected 'guarded' =>
array (size=1)
...
protected 'dates' =>
array (size=0)
...
protected 'touches' =>
array (size=0)
...
protected 'observables' =>
array (size=0)
...
protected 'with' =>
array (size=0)
...
protected 'morphClass' => null
public 'exists' => boolean false
protected 'forceDeleting' => boolean false
protected 'eagerLoad' =>
array (size=0)
empty
protected 'macros' =>
array (size=4)
'forceDelete' =>
object(Closure)[70]
...
'restore' =>
object(Closure)[69]
...
'withTrashed' =>
object(Closure)[68]
...
'onlyTrashed' =>
object(Closure)[66]
...
protected 'onDelete' =>
object(Closure)[74]
protected 'passthru' =>
array (size=12)
0 => string 'toSql' (length=5)
1 => string 'lists' (length=5)
2 => string 'insert' (length=6)
3 => string 'insertGetId' (length=11)
4 => string 'pluck' (length=5)
5 => string 'count' (length=5)
6 => string 'min' (length=3)
7 => string 'max' (length=3)
8 => string 'avg' (length=3)
9 => string 'sum' (length=3)
10 => string 'exists' (length=6)
11 => string 'getBindings' (length=11) protected 'parent' =>
object(App\Models\User)[73]
protected 'fillable' =>
array (size=5)
0 => string 'name' (length=4)
1 => string 'username' (length=8)
2 => string 'email' (length=5)
3 => string 'password' (length=8)
4 => string 'salt' (length=4)
protected 'connection' => null
protected 'table' => null
protected 'primaryKey' => string 'id' (length=2)
protected 'perPage' => int 15
public 'incrementing' => boolean true
public 'timestamps' => boolean true
protected 'attributes' =>
array (size=9)
'id' => string '1' (length=1)
'name' => string 'Martyn' (length=6)
'username' => string 'martyn' (length=6)
'email' => string 'martyn@yahoo.co.uk' (length=18)
'password' => string 'password' (length=8)
'salt' => string 'salt' (length=4)
'created_at' => string '0000-00-00 00:00:00' (length=19)
'updated_at' => string '0000-00-00 00:00:00' (length=19)
'deleted_at' => null
protected 'original' =>
array (size=9)
'id' => string '1' (length=1)
'name' => string 'Martyn' (length=6)
'username' => string 'martyn' (length=6)
'email' => string 'martyn@yahoo.co.uk' (length=18)
'password' => string 'password' (length=8)
'salt' => string 'salt' (length=4)
'created_at' => string '0000-00-00 00:00:00' (length=19)
'updated_at' => string '0000-00-00 00:00:00' (length=19)
'deleted_at' => null
protected 'relations' =>
array (size=0)
empty
protected 'hidden' =>
array (size=0)
empty
protected 'visible' =>
array (size=0)
empty
protected 'appends' =>
array (size=0)
empty
protected 'guarded' =>
array (size=1)
0 => string '*' (length=1)
protected 'dates' =>
array (size=0)
empty
protected 'touches' =>
array (size=0)
empty
protected 'observables' =>
array (size=0)
empty
protected 'with' =>
array (size=0)
empty
protected 'morphClass' => null
public 'exists' => boolean true
protected 'forceDeleting' => boolean false protected 'related' =>
object(App\Models\Account)[57]
protected 'fillable' =>
array (size=3)
0 => string 'name' (length=4)
1 => string 'amount' (length=6)
2 => string 'user_id' (length=7)
protected 'connection' => null
protected 'table' => null
protected 'primaryKey' => string 'id' (length=2)
protected 'perPage' => int 15
public 'incrementing' => boolean true
public 'timestamps' => boolean true
protected 'attributes' =>
array (size=0)
empty
protected 'original' =>
array (size=0)
empty
protected 'relations' =>
array (size=0)
empty
protected 'hidden' =>
array (size=0)
empty
protected 'visible' =>
array (size=0)
empty
protected 'appends' =>
array (size=0)
empty
protected 'guarded' =>
array (size=1)
0 => string '*' (length=1)
protected 'dates' =>
array (size=0)
empty
protected 'touches' =>
array (size=0)
empty
protected 'observables' =>
array (size=0)
empty
protected 'with' =>
array (size=0)
empty
protected 'morphClass' => null
public 'exists' => boolean false
protected 'forceDeleting' => boolean false
答案 0 :(得分:3)
使用正常语法:
User::find(1)->accounts()->get()
User::find(1)->accounts
但不要混淆两者。 accounts()
只是查询构建器的hasMany关系。帐户的实际对象由get()
检索。动态属性缩短了为此任务编写所需的代码
出于好奇,为什么要明确写出完全限定的命名空间?您可以使用extends Eloquent