Laravel模型属于当前用户和全局用户
Laravel model belongs to current user and global user
我有以下 collections:
用户
{
"id": 1,
"name": "Bob"
},
{
"id": 2,
"name": "Mary"
}
东西
{
"id": 1,
"user_id": 1,
"name": "Bob's stuff"
},
{
"id": 2,
"user_id": 2,
"name": "Mary's stuff"
},
{
"id": 3,
"user_id": 0,
"name": "Everyone's stuff"
},
{
"id": 4,
"user_id": null,
"name": "Global stuff"
}
...以及以下型号:
class User extends Eloquent {
public function stuff() {
return $this -> hasMany( 'Stuff' ) ;
}
}
class Stuff extends Eloquent {
public function user() {
return $this -> belongsTo( 'User' ) ;
}
}
如何自动将所有人的东西(User.id == 0)和全局的东西(User.id == null)添加到所有人的模型中?换句话说,如果我正在查询 Bob 的东西,我希望得到以下信息:
{
"id": 1,
"user_id": 1,
"name": "Bob's stuff"
},
{
"id": 3,
"user_id": 0,
"name": "Everyone's stuff"
},
{
"id": 4,
"user_id": null,
"name": "Global stuff"
}
你可以使用这个:
public function stuff() {
return $this->hasMany(Stuff::class)->orWhere('user_id', 0)->orWhereNull('user_id');
}
缺点是不能只添加其他 WHERE
子句:
$user->stuff()->where('foo', 'bar')->get(); // Doesn't work as expected.
因此,预加载不起作用。
我有以下 collections:
用户
{
"id": 1,
"name": "Bob"
},
{
"id": 2,
"name": "Mary"
}
东西
{
"id": 1,
"user_id": 1,
"name": "Bob's stuff"
},
{
"id": 2,
"user_id": 2,
"name": "Mary's stuff"
},
{
"id": 3,
"user_id": 0,
"name": "Everyone's stuff"
},
{
"id": 4,
"user_id": null,
"name": "Global stuff"
}
...以及以下型号:
class User extends Eloquent {
public function stuff() {
return $this -> hasMany( 'Stuff' ) ;
}
}
class Stuff extends Eloquent {
public function user() {
return $this -> belongsTo( 'User' ) ;
}
}
如何自动将所有人的东西(User.id == 0)和全局的东西(User.id == null)添加到所有人的模型中?换句话说,如果我正在查询 Bob 的东西,我希望得到以下信息:
{
"id": 1,
"user_id": 1,
"name": "Bob's stuff"
},
{
"id": 3,
"user_id": 0,
"name": "Everyone's stuff"
},
{
"id": 4,
"user_id": null,
"name": "Global stuff"
}
你可以使用这个:
public function stuff() {
return $this->hasMany(Stuff::class)->orWhere('user_id', 0)->orWhereNull('user_id');
}
缺点是不能只添加其他 WHERE
子句:
$user->stuff()->where('foo', 'bar')->get(); // Doesn't work as expected.
因此,预加载不起作用。