Я пытаюсь ознакомиться с Laravel и структурой MVC, перенеся приложение, написанное на php, в Laravel.Laravel Eloquent non-object error
Я создал контроллер UserController.php:
<?php
class UserController extends BaseController{
public function showUsers(){
// Display all SQL executed in Eloquent
Event::listen('illuminate.query', function($query)
{
var_dump($query);
});
$users = User::all();
return View::make('users')->with('users', $users);
}
}
Модель User.php:
<?php
class User extends Eloquent {
protected $table = 'users';
public $timestamps = false;
public function ip()
{
return $this->hasOne('IP', 'user');
}
}
и модель IP.php
<?php
class IP extends Eloquent {
protected $table = 'ips';
public $timestamps = false;
public function user()
{
return $this->belongsTo('User');
}
}
В моих пользователей просмотреть .blade.php Я показываю информацию о выборе для всех пользователей в формате таблицы, например:
<tbody>
@foreach($users as $user)
<tr>
<td>{{ $user->id }}</td>
<td>{{{ $user->lname . ',' . $user->fname }}}</td>
<td>{{{ $user->ip }}}</td>
</tr>
@endforeach
</tbody>
При выполнении, как это я получаю ответ массива для IP-адреса, таких как:
{"id":"257","ip_addr":"167772675","network":"2","user":"00002","router":null,"used":"1"}
которая является правильной информацией для отображения для этой строки пользователя. Если я пытаюсь получить только нужный адрес ИС:
{{{ $user->ip->ip_addr }}}
Я получаю следующее сообщение об ошибке: ErrorException (E_UNKNOWN) Попытка получить свойство необъектных
Схема базы данных выглядит следующим образом : пользователи стола:
+---------+-------------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------------------------+------+-----+---------+----------------+
| id | smallint(5) unsigned zerofill | NO | PRI | NULL | auto_increment |
| fname | varchar(30) | NO | | NULL | |
| lname | varchar(30) | NO | | NULL | |
| bname | varchar(40) | NO | | NULL | |
| addr1 | varchar(50) | NO | | NULL | |
| addr2 | varchar(50) | NO | | NULL | |
| city | varchar(50) | NO | | NULL | |
| state | varchar(2) | NO | | NULL | |
| zip | varchar(5) | NO | | NULL | |
| email | varchar(254) | NO | | NULL | |
| phone1 | varchar(12) | NO | | NULL | |
| phone2 | varchar(12) | NO | | NULL | |
| idate | date | YES | | NULL | |
| tdate | date | YES | | NULL | |
| ptype | int(11) | YES | | NULL | |
| maddr | varchar(12) | NO | | NULL | |
| antenna | int(11) | YES | MUL | NULL | |
| notes | text | NO | | NULL | |
| service | int(11) | YES | MUL | NULL | |
| company | int(11) | NO | | 0 | |
| active | tinyint(1) | NO | | 1 | |
| blocked | tinyint(1) | NO | | 0 | |
+---------+-------------------------------+------+-----+---------+----------------+
и настольный ИПС:
+---------+-------------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------------------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| ip_addr | int(10) unsigned | NO | UNI | NULL | |
| network | int(11) | YES | MUL | NULL | |
| user_id | smallint(5) unsigned zerofill | YES | MUL | NULL | |
| router | int(11) | YES | MUL | NULL | |
| used | tinyint(1) | NO | | NULL | |
+---------+-------------------------------+------+-----+---------+----------------+
Я пробовал широкий спектр вариантов синтаксиса, и я просто наступаю на эту воду. Спасибо, что посмотрели!
Вы имели в виду '{{{$ user-> ip() -> ip_addr}}}'? – fakemeta
@fakemeta, что не будет проблемой, Eloquent превращает эти отношения в свойства объектов модели. @Tom Я считаю, что у вас есть ошибка capitilization в ваших отношениях с пользователем, вы связаны с «IP», но класс «Ip» –
. Добавление() в ip возвращает вместо этого ошибку: ErrorException (E_UNKNOWN) Неопределенное свойство : Illuminate \ Database \ Eloquent \ Relations \ HasOne :: $ ip_addr –