Laravel 未显示模型字段

Laravel 未显示模型字段,laravel,laravel-5.6,Laravel,Laravel 5.6,我有一个包含图像、类别id、创建人、更新人、创建地点、更新地点字段的文章表。我将文章翻译存储在一个单独的表中,该表包含slug、title、subtitle、description和locale字段 我想使用seo友好的URL,比如文章/类别slug/文章slug 我在ArticeController中尝试了下面的代码 public function show(ArticleCategory $articlecategory, $slug) { $locale = Lang::local

我有一个包含图像、类别id、创建人、更新人、创建地点、更新地点字段的文章表。我将文章翻译存储在一个单独的表中,该表包含slug、title、subtitle、description和locale字段

我想使用seo友好的URL,比如文章/类别slug/文章slug

我在ArticeController中尝试了下面的代码

public function show(ArticleCategory $articlecategory, $slug)
{
    $locale = Lang::locale();
    $article = Article::join('article_translations', 'articles.id', '=', 'article_translations.article_id')
    ->where([['slug', $slug], ['locale', $locale]])->with('category')
    ->firstOrFail();
    $article->addPageView();
    return ArticleResource::collection($article);
}
老问题(由Chris answer解决):但它不会显示所有字段

我已经根据Chris的建议更新了上面的代码。然而,我也在使用一个资源集合,上面的代码显示了一个错误。 错误

文章资源

<?php

namespace App\Http\Resources\Articles;

use Illuminate\Http\Resources\Json\JsonResource;
use Carbon\Carbon;
use App\Models\ArticleTranslation;

class ArticleResource extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return [
          'id' => $this->id,
          'article_url' => '/articles/'.$this->category->slug.'/'.$this->slug,
          'category' => $this->category->name,
          'category_slug' => $this->category->slug,
          'category_url' => '/articles/'.$this->category->slug,
          'image' => url('/').$this->image,
          'author' => $this->creator->name,
          'created' => Carbon::parse($this->created_at)->diffForHumans(),
          'updated' => Carbon::parse($this->updated_at)->diffForHumans(),
          'views' => $this->page_views,
          'title' => $this->title,
          'subtitle' => $this->subtitle,
          'description' => $this->content,
          'links' => [
              'self' => 'link-value',
          ],
        ];
    }
}

您在打开查询时仅对
id
slug
进行选择,因此您将始终限于这些字段

尝试:


这是因为您正在覆盖
文章
模型上选择的字段。删除
select
方法调用。向我展示您的
文章
模型?请将您的问题还原为原始问题。你完全改变了问题(包括标题)。如果你有一个新问题,问一个新问题。我是这个论坛的新手。我试一个新问题,没问题。人们只是想帮助你,当你戏剧性地改变你的问题时,这意味着他们付出的努力是徒劳的,sorry@Srikanth,但我拒绝了编辑请求-将其包装在appmake中不是上面代码的意图。你是否需要这样做才能使你的场景生效?是的,这是我的解决方案。
<?php

namespace App\Http\Resources\Articles;

use Illuminate\Http\Resources\Json\JsonResource;
use Carbon\Carbon;
use App\Models\ArticleTranslation;

class ArticleResource extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return [
          'id' => $this->id,
          'article_url' => '/articles/'.$this->category->slug.'/'.$this->slug,
          'category' => $this->category->name,
          'category_slug' => $this->category->slug,
          'category_url' => '/articles/'.$this->category->slug,
          'image' => url('/').$this->image,
          'author' => $this->creator->name,
          'created' => Carbon::parse($this->created_at)->diffForHumans(),
          'updated' => Carbon::parse($this->updated_at)->diffForHumans(),
          'views' => $this->page_views,
          'title' => $this->title,
          'subtitle' => $this->subtitle,
          'description' => $this->content,
          'links' => [
              'self' => 'link-value',
          ],
        ];
    }
}
$locale = Lang::locale();
        $article = Article::join('article_translations', 'articles.id', '=', 'article_translations.article_id')
        ->where('slug', $slug)->withTranslations($locale)
        ->firstOrFail();
        $article->addPageView();
        return $article;