Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Нет, судя по вашему запросу.
dialogs - это сообщения чата. Имя выбрано не совсем удачно. Одно сообщение принадлежит одному пользователю. Разве не One To One?
Я не пытаюсь выбрать все сообщения одного пользователя. Напротив, пытаюсь узнать `username` оставившего сообщение.
Поправьте, пожалуйста, если не прав.
mysql> describe users;
+-----------------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+------------------+------+-----+---------------------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| email | varchar(255) | NO | UNI | NULL | |
| username | varchar(16) | NO | UNI | NULL | |
| password | varchar(60) | NO | | NULL | |
| joined_at | timestamp | NO | | 0000-00-00 00:00:00 | |
| remember_token | varchar(100) | YES | | NULL | |
| validation_code | varchar(255) | YES | | NULL | |
| status | tinyint(4) | NO | | NULL | |
+-----------------+------------------+------+-----+---------------------+----------------+
mysql> describe dialogs;
+------------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------------------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| user_id | int(10) unsigned | NO | | NULL | |
| date | timestamp | NO | | 0000-00-00 00:00:00 | |
| is_deleted | tinyint(1) | NO | | NULL | |
| message | text | NO | | NULL | |
+------------+------------------+------+-----+---------------------+----------------+
На выходе нужна вот такая конструкция:
mysql> select dialogs.id, users.username, dialogs.date, dialogs.message from dialogs left join users on dialogs.user_id = users.id and dialogs.is_deleted = 0 order by dialogs.id desc limit 10;
+----+-------------+---------------------+------------------------------------------+
| id | username | date | message |
+----+-------------+---------------------+------------------------------------------+
| 68 | ElForastero | 2015-01-17 15:30:35 | Здесь был Юлий!!!!!! |
| 67 | ElForastero | 2015-01-17 15:30:20 | Привет, мир! |
| 66 | ElForastero | 2015-01-17 15:29:57 | 22rewrwrewaewrawer |
| 65 | ElForastero | 2015-01-17 15:29:48 | 22rewrw |
| 64 | ElForastero | 2015-01-17 15:29:37 | 22 |
| 63 | ElForastero | 2015-01-17 15:27:14 | 11111 |
| 62 | ElForastero | 2015-01-17 15:26:49 | qwqwqwqwww |
| 61 | ElForastero | 2015-01-17 15:26:32 | qwqwqwq |
| 60 | ElForastero | 2015-01-17 15:26:05 | qwr2 |
| 59 | ElForastero | 2015-01-17 15:25:29 | qwe1 |
+----+-------------+---------------------+------------------------------------------+
Потому что используете Eloquent. В вашем случае можно использовать отношения One To Many http://laravel.com/docs/4.2/eloquent#relationships
Скорее One To One. Это что-то вроде общего чата.
Здравствуйте. Подсобите с составлением запроса.
Каков порядок условий при использовании Join'ов?
Попытался составить нечто похоже на это, но на выхлопе получается объект.
$messages = Dialog::orderBy('dialogs.id', 'desc')->where('is_deleted', '=', 0)->leftJoin('users', function($join) {
$join->on('dialogs.user_id', '=', 'users.id');
})->select('dialogs.id', 'dialogs.message', 'dialogs.date', 'users.username')->take(20)->get();
Объект с кучей свойств, в т.ч. настройками конкретной модели и пр.
object(Illuminate\Database\Eloquent\Collection)#172 (1) { ["items":protected]=> array(1) { [0]=> object(Dialog)#159 (21) { ["timestamps"]=> bool(false) ["fillable":protected]=...
P.S. Выборка элементарная.
2 таблицы: users и dialogs. Требуется выбрать последние 10 сообщений из таблицы dialogs, и имя пользователя из таблицы users. В dialogs есть ключ user_id.
Путь указывайте без директории public.
Ну, ответ один: авторизация не проходит.
Всем бобра, товарищи.
Сие есть баг, или фича?
The password confirmation confirmation does not match.
array(5) {
["_token"]=>
string(40) "Msc0Cxe4vIVTEdHBhEukbaOhWogRRzOqNytbKVzR"
["email"]=>
string(16) "example@mail.com"
["username"]=>
string(9) "Confucius"
["password"]=>
string(9) "qwerty123"
["password_confirmation"]=>
string(9) "qwerty123"
}
UPD: Вопрос снимается. Я правило "confirmed" добавил к полю "password_confirmation", а не к "password", как положено. Отсюда и непонятки.
Страницы 1