我有两个文件,
CommentTransformer
并且
ImageTransformer
在第一个文件CommentTransformer
中,我可以通过执行以下操作检索它所属的文章:
$article = Article::find($comment->article_id);
我在我的ImageTransformer中执行同样的事情,但它返回null
。即使不使用Article::find($image->article_id)
我使用Article::find(1)
,我仍然会得到一个空结果!
这是完整的代码:
namespace App\Transformers;
use App\Article;
use App\User;
use App\Image;
use League\Fractal\TransformerAbstract;
class ImageTransformer extends TransformerAbstract
{
/**
* A Fractal transformer.
*
* @return array
*/
public function transform(Image $image)
{
$user = User::findOrFail($image->user_id);
$article = Article::find($image->article_id);
// $userArticle = User::find($article->user_id);
return [
'id' => (int) $image->id,
'original_filename' => $image->original_filename,
'filename' => $image->filename,
'size' => (int) $image->size,
'path' => url('/') . "/" . $image->path . '/' . $image->filename,
'posted_by_username' => $user->name,
'article' => $article //if I call $article->id it returns "Trying to get property of non-object" as it is, it returns null
];
}
}
这是回复:
{
"data": [
{
"id": 1,
"original_filename": "ptd.jpg",
"filename": "f11bbe288649e76ec3b694890160abf930601aed.jpeg",
"size": 103297,
"path": "http:\/\/192.168.1.85:1299\/uploads\/f11bbe288649e76ec3b694890160abf930601aed.jpeg",
"posted_by_username": "josh beck",
"article": null
}
]
}
答案 0 :(得分:0)
我认为这个会返回null
,因为findOrFail()
会抛出一个
例外:
$article = Article::find($image->article_id);
如果返回null
,则表示没有具有指定ID的文章。您可以使用dd($image-article_id);
此外,您只需使用load()
方法加载数据:
$image->load(['user', 'article']);
答案 1 :(得分:0)
我同意阿列克谢的观点。如果有该用户ID的数据,则使用: -
$user = User::find($image->user_id)->first();
$article = Article::find($image->article_id)->first();
确保数据的存在。