Laravel 5.5 Eloquent - 文章:: find returns null

时间:2017-10-16 13:06:14

标签: php laravel laravel-5

我有两个文件,

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
    }
   ]
 }

2 个答案:

答案 0 :(得分:0)

我认为这个会返回null,因为findOrFail()会抛出一个 例外:

$article = Article::find($image->article_id);

如果返回null,则表示没有具有指定ID的文章。您可以使用dd($image-article_id);

检查ID

此外,您只需使用load()方法加载数据:

$image->load(['user', 'article']);

答案 1 :(得分:0)

我同意阿列克谢的观点。如果有该用户ID的数据,则使用: -

$user = User::find($image->user_id)->first();
$article = Article::find($image->article_id)->first();

确保数据的存在。