Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
вот в этом видео чувак рассказывает про самую простую связь таблиц http://www.youtube.com/watch?v=xIBST5vV … 39Y1tKl5DB
я сделал все так же как он рассказал
\model\Post.php
class Post extends Eloquent {
public function user()
{
return $this->belongsTo('User');
}
}
\views\post\showall.blade.php
@extends('template.template')
@section('content')
@if(isset($posts) && count($posts))
@foreach ($posts as $post)
<section>
<a href="posts/{{ $post->id }}"><h3>{{ $post->title }}</h3></a>
<img src="{{ $post->image }}" alt="{{ $post->title }}" style="float:left;" />
<p>{{ Str::limit($post->body, 50) }}</p>
<p><a href="#">{{ $post->user }}</a></p>
<section style="clear:both;"></section>
</section>
@endforeach
@else
<p>Нет записей в блоге</p>
@endif
<?php echo $posts->links(); ?>
@stop
Такой вариант у чувака в видео выводил целую строку из таблицы users.
У меня он выводит пустое место
<p><a href="#"> </a></p>
Дальше он усложнил {{ $post->user->name }} и получил имя автора.
А у меня такой код привел к ошибке
Trying to get property of non-object (View: ...\app\views\post\showall.blade.php)
Таблица users у меня есть. В ней 2 юзера. В таблице постов проставлены id этих юзеров.
\app\database\migrations\2014_12_31_184209_create_posts_table.php
class CreatePostsTable extends Migration {
public function up()
{
Schema::create('posts', function($table)
{
$table->increments('id')->unsigned();
$table->integer('category_id')->unsigned();
$table->foreign('category_id')->references('id')->on('categories');
$table->string('sef', 50);
$table->string('title', 150);
$table->text('body');
$table->string('image', 300);
$table->integer('author')->unsigned();
$table->foreign('author')->references('id')->on('users');
$table->boolean('active', 100);
$table->string('meta_title', 50);
$table->string('keywords', 150);
$table->string('description', 150);
$table->timestamps();
});
}
\app\database\migrations\2014_12_20_085806_create_users_table.php
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration {
public function up() {
Schema::create('users', function ($table) {
$table->increments('id');
$table->string('email')->unique();
$table->string('name');
$table->timestamps();
});
}
Изменено schel4ok (02.01.2015 23:27:41)
Не в сети
погуглил и вот тут нашел такую же проблему http://forumsarchive.laravel.io/viewtopic.php?id=3889
пару советов из этой темы реально помогли
вот этот код помог выводить всю строку из БД при вызове {{ $post->user }}
public function user()
{
return $this->belongsTo('User', 'id');
}
но при вызове {{ $post->user->name }} всё равно ошибка Trying to get property of non-object (View: ...\app\views\post\showall.blade.php)
от этой ошибки почему-то спасает такой код
@if($post->user)
{{ $post->user->name }}
@endif
И сразу выводится имя юзера. Вот тут я вообще не понимаю. Код остался тот же самый. Просто добавилась проверка существования объекта.
Кто-нибудь понимает смысл этой операции?
Не в сети
Для начала приведите имена моделей, таблиц и полей к нормальному виду. Модель User, таблица users, pk - id, fk - user_id.
Это сразу решит часть проблем и поможет лучше ориентироваться. В т.ч. будут использоваться правильные настройки по умолчанию.
Затем удалите все лишнее из своего кода и анализируйте sql запросы.
супер совет. лучше вообще не писать, чем так
Не в сети
Страницы 1