我已经定义了用户与投资组合的关系,但它给了我空,我的用户模型是
class User extends Model implements AuthenticatableContract,
AuthorizableContract,
CanResetPasswordContract
{
use Authenticatable, Authorizable, CanResetPassword;
protected $table = 'users';
protected $fillable = ['name', 'email', 'password'];
protected $hidden = ['password', 'remember_token'];
public function portfolio()
{
$this->hasMany('App'Portfolio');
}
}
我的投资组合模型是
class Portfolio extends Model
{
protected $fillable = ['user_id', 'ptitle', 'pdate','pedate','purl','languages','pdes','attachments'];
public function user()
{
$this->belongsTo('App'User');
}
public function attachments()
{
$this->hasMany('App'Attachment');
}
}
我已经在迁移时定义了外键,我的迁移代码是
public function up()
{
Schema::create('portfolios', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->string('ptitle');
$table->timestamps();
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade');
});
}
我再次运行迁移。 当我尝试获取用户投资组合时,它给了我空值,我在控制器的顶部声明了这一点 use App'User;
然后我通过这个命令找到用户 $user=User::find(1)
最后我这样做$user->portfolio()
但它给了我空 我被困在 2 到 3 小时请帮助我
您应该返回关系以获取关系数据
public function portfolio()
{
return $this->hasMany('App'Portfolio');
}
基本短端示例设置(在以下示例中使用):
class User extends Model {
public function portfolio()
{
//you missed the return
return $this->hasMany('App'Portfolio');
}
}
class Portfolio extends Model {
public function user()
{
//you missed the return
return $this->belongsTo('App'User');
}
}
假设您有一个 ID 为 1 的用户和相关投资组合条目:
$mUser = User::findOrFail(1); //Return User model
$mUserLazy = User::with('portfolio')->findOrFail(1); //Preload portfolio
$mPortfolioQueryBuilder = $mUser->portfolio(); //QueryBuilder
$aPortfolio = $mUser->portfolio; //Portfolio Collection
$aPortfolio = $mUserLazy->portfolio; //Portfolio Collection
$aPortfolio = $mPortfolioQueryBuilder->get(); //Portfolio Collection