【发布时间】:2017-08-03 20:34:49
【问题描述】:
我创建了一个工匠自定义命令,在 handle() 方法中我需要获取一些关于用户的信息。
当我跑步时:
handle() {
$users = User::all();
foreach($users as $user) {
$this->line($user->name);
}
}
它有效,但我需要类似的东西:
handle() {
$users = User::all();
foreach($users as $user) {
$this->line($user->summoner->summoner_id);
}
}
我得到了尝试获取非对象的属性。
如果我在控制器中运行上面相同的代码,它就可以正常工作。
有人有想法吗?
用户模型:
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
public function summoner() {
return $this->hasOne('App\Summoner');
}
召唤师模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Summoner extends Model
{
protected $table = 'summoners';
public $timestamps = true;
public function user() {
return $this->belongsTo('App\User');
}
}
【问题讨论】:
-
展示你的模型和关系。
-
好的,上面已经编辑了
-
尝试在日志中转储
$users。看看你在变量中到底得到了什么。如果任何用户没有电话号码,也会发生这种情况 -
听起来好像所有的召唤师都有一个用户,但并不是所有的用户都有一个召唤师。在尝试打印之前验证 (
if !empty($user->summoner)) -
您将电话号码编辑为其他内容。 (召唤者->召唤者_id)。尝试记录对象
标签: php laravel command laravel-artisan