web-dev-qa-db-fra.com

Laravel La propriété [title] n'existe pas sur l'instance du générateur Eloquent

Je reçois une erreur en essayant d'afficher les données de la base de données.Ce problème est survenu par d'autres personnes qui ont créé des messages sur ce site Web. mais ils ont une boucle foreach et moi pas. donc toutes les réponses données pour ce problème ne fonctionnent pas.

contrôleur d'article

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

ceci sur le contrôleur

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

en vue:

<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

Relations de chargement désireuses (CECI FONCTIONNERA JUSTE COMPRENDRE CECI)

DataTables prend en charge la recherche et le tri de relations chargées lors de l'utilisation d'Eloquent. cet exemple vous montrera comment configurer une recherche de chargement rapide à l'aide d'Eloquent Engine.

Pour activer la recherche, nous devons charger la relation que nous avons l'intention d'utiliser en utilisant User :: with ('posts') de Laravel = 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();
});

Pour déclencher la recherche sur les relations , nous devons spécifier la ( relation.column_name comme l'attribut name dans notre javascript de manière appropriée.

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

En regardant {data: 'posts', nom: 'posts.title'}, :

data: posts représente la clé de données (data.posts) que nous allons afficher sur notre table. name: posts.title représente la relation du modèle utilisateur ( posts ) et la colonne que nous allons effectuer notre recherche ( title ).

0
Aditya Tomar

ou essayez simplement ceci:

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

en vue, utilisez ceci:

{{ $artikel->name }}

Sur votre code: vous appelez pour obtenir un enregistrement mais essayez d'utiliser le pluriel.

0
Sahin S.