如何通过 laravel 中的一对一关系访问我的 post class
how to access my post class with one to one relationship in laravel
我是 Laravel 的新人。我有两个 classes(User,Post) 并且我想通过使用一对一关系从用户 class 调用 Post class, hasOne(namespace ).这可能吗?它与下面的link视频相同,但代码不同。
https://www.youtube.com/watch?v=Lr28pSlqzV8&list=PLfdtiltiRHWEb-tzSN99Zy-39Y1tKl5DB&index=3
这是我的用户class
<?php
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
use App\Post;
class User extends Authenticatable
{
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
public function post(){
return $this->hasOne('App\Post');
}
}
这是routes.php
Route::get('/user/{id}/post',function ($id){
return User::find($id)->post->content;
});
我的Postclass
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Post extends Model
{
use SoftDeletes;
protected $dates=['deleted_at'];
protected $fillable=[
'title',
'content'
];}
这里我使用 User class 调用了 get 方法,我想检索 posts table内容栏(来自Postclass)
我想知道该怎么做,因为我 运行 这段代码出错了
在 HandleExceptions->handleError('8', 'Trying to get property of non-object', 'C:\xampp\htdocs\cms\app\Http\routes.php', '144', array('id' => '1')) 在 routes.php 第 144 行
这里是tables
我们必须看到 Post class 才能确定,但我猜这些表只是空的。用户没有posts,所以User::find($id)->post为null,然后你尝试获取它的内容属性,结果是你得到的错误,因为 null 实际上是非对象 :)。只需生成一些样本数据来检查是否属实。
此外,返回这样的对象将不起作用:
// this will not work
return User::find($id)->post->content;
// do this in the testing phase to see if relationship works
return print_r(User::find($id)->post->content, true);
// or
dd(User::find($id)->post->content);
否则你似乎在正确的轨道上,继续前进!
我是 Laravel 的新人。我有两个 classes(User,Post) 并且我想通过使用一对一关系从用户 class 调用 Post class, hasOne(namespace ).这可能吗?它与下面的link视频相同,但代码不同。
https://www.youtube.com/watch?v=Lr28pSlqzV8&list=PLfdtiltiRHWEb-tzSN99Zy-39Y1tKl5DB&index=3
这是我的用户class
<?php
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
use App\Post;
class User extends Authenticatable
{
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
public function post(){
return $this->hasOne('App\Post');
}
}
这是routes.php
Route::get('/user/{id}/post',function ($id){
return User::find($id)->post->content;
});
我的Postclass
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Post extends Model
{
use SoftDeletes;
protected $dates=['deleted_at'];
protected $fillable=[
'title',
'content'
];}
这里我使用 User class 调用了 get 方法,我想检索 posts table内容栏(来自Postclass)
我想知道该怎么做,因为我 运行 这段代码出错了
在 HandleExceptions->handleError('8', 'Trying to get property of non-object', 'C:\xampp\htdocs\cms\app\Http\routes.php', '144', array('id' => '1')) 在 routes.php 第 144 行
这里是tables
我们必须看到 Post class 才能确定,但我猜这些表只是空的。用户没有posts,所以User::find($id)->post为null,然后你尝试获取它的内容属性,结果是你得到的错误,因为 null 实际上是非对象 :)。只需生成一些样本数据来检查是否属实。
此外,返回这样的对象将不起作用:
// this will not work
return User::find($id)->post->content;
// do this in the testing phase to see if relationship works
return print_r(User::find($id)->post->content, true);
// or
dd(User::find($id)->post->content);
否则你似乎在正确的轨道上,继续前进!