web-dev-qa-db-ja.com

Laravelプロパティ[タイトル]はEloquentビルダーインスタンスに存在しません

データベースのデータを表示しようとすると、エラーが発生します。この問題は、このWebサイトに投稿を作成した他のユーザーによって発生しました。しかし、それらにはforeachループがあり、私にはありません。したがって、この問題に対して与えられたすべての答えは機能しません。

記事コントローラー

public function showwereld($id)
{
    $artikels = Artikel::where('id', $id);
    return view('pages.show')->with('artikels', $artikels);
}

show.blade.php

<div class="row">
        <div class="artikeltitel marginauto">
            <div class="col-md-6 offset-md-3">
            <h2>{{$artikels->title}}</h2>
            <p style="font-weight: bold;">{{$artikels->intro}}</p>              
            <p>{{$artikels->body}}</p>
            </div>
        </div>
    </div>

enter image description here

3
JohnSmith2521

コントローラ上のこれ

public function index()
{
    $artikel =  Artikel::where('category_id', '1')->first();
    return view('pages.wereld',compact('artikel'));
}

ビューで:

<div class="row">
            <div class="artikeltitel marginauto">
                <div class="col-md-6 offset-md-3">
                <h2>{{$artikel->title}}</h2>
                <p style="font-weight: bold;">{{$artikel->intro}}</p>              
                <p>{{$artikel->body}}</p>
                </div>
            </div>
</div>
4
Ahmed Atoui

熱心なローディング関係(これはこれを理解するだけで機能します)

DataTablesは、Eloquentを使用するときに、熱心に読み込まれた関係の検索と並べ替えをサポートします。この例では、Eloquent Engineを使用して熱心な読み込み検索を設定する方法を示します。

検索を有効にするには、Laravelのser :: with( 'posts') apiを使用して、使用する関係を熱心にロードする必要があります。

use DataTables;

Route::get('user-data', function() {
$model = App\User::with('posts');

return DataTables::eloquent($model)
            ->addColumn('posts', function (User $user) {
                return $user->posts->map(function($post) {
                    return str_limit($post->title, 30, '...');
                })->implode('<br>');
            })
            ->toJson();
});

posts関係で検索をトリガーするには、relation.column_name-として指定する必要がありますname属性javascriptの適切な属性。

<script>
$(document).ready(function() {
    $('#users-table').DataTable({
        processing: true,
        serverSide: true,
        ajax: '{{ url("collection/basic-object-data") }}',
        columns: [
            {data: 'id', name: 'id'},
            {data: 'name', name: 'name'},
            {data: 'email', name: 'email'},
            {data: 'posts', name: 'posts.title'},
            {data: 'created_at', name: 'created_at'},
            {data: 'updated_at', name: 'updated_at'}
        ]
    });
});
</script>

{data: 'posts'、name: 'posts.title'}、を見る:

data:postsはデータキーを表します(data.posts)テーブルに表示します。 name:posts.titleは、ユーザーモデルの関係(posts)と、これから実行する列を表します検索(title)。

0
Aditya Tomar

または基本的にこれを試してください:

$artikel = Artikel::find($id);
return view(pages.wereld, ['artikel' => $artikel]);

ビューでこれを使用してください:

{{ $artikel->name }}

コード上:レコードを取得するために呼び出していますが、複数形を使用しようとしています。

0
Sahin S.