Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 12.12.2014 15:51:51

nemocoder
Откуда: Almaty, Kazakhstan
Сообщений: 69

Проблема с Eloquent

Задача такова нужно отнять   от поля (un) сумму из полей amt, pay_un, delivery_un и сохранить делаю так

$val1 = Import::find('pay_un');
$val2 = Import::find('delivery_un');;
$val3 = Import::find('amt');
$val4 = Cash::find('un');
$data = $val4 - ($val3 * ($val1 + $val2));
$cash = new Cash();

$cash->un = $data;
$user = Auth::user();

$user->cashes()->save($cash);

это действие обнуляет поле (un)

Изменено Proger_XP (13.12.2014 10:37:34)

Не в сети

#2 12.12.2014 16:36:17

Re: Проблема с Eloquent

  1. Cash::find(’un’);

Это аналогично SELECT * FROM cash WHERE id = 'un'. Подозреваю, что это не то, что ты хочешь сделать.

p.s: переименуй тему во что-то более подходящее.

Не в сети

#3 12.12.2014 16:51:27

nemocoder
Откуда: Almaty, Kazakhstan
Сообщений: 69

Re: Проблема с Eloquent

Proger_XP пишет:

}%> Cash::find('un');
Это аналогично %%SELECT * FROM cash WHERE id = 'un'%%. Подозреваю, что это не то, что ты хочешь сделать.

p.s: переименуй тему во что-то более подходящее.

получается он ищет id со значением un ? и так все ?

Не в сети

#4 12.12.2014 18:11:24

Re: Проблема с Eloquent

Задача не очень ясна, но может я все таки угадал и одно из решений подходит? smile

$import_id = 1; // нужный тебе ID в таблице "import"
$import = Import::find($id);

// 1-ый вариант
$cash_id = 1; // нужный тебе ID в таблице "cash"
$cash = Cash::find($cash_id);
$cash->un = $cash->un - ($import->pay_un + $import->delivery_un + $import->amt);
$cash->save();

// 2-ой вариант
$cash_id = 1;
$cash = Cash::find($cash_id);
$cash_2 = Cash::create(array('un' => $cash->un - ($import->pay_un + $import->delivery_un + $import->amt));
$user = User::find(Auth::id());
$user->cashes()->save($cash_2);

Изменено lieroes (12.12.2014 18:14:05)

Не в сети

#5 13.12.2014 15:12:10

nemocoder
Откуда: Almaty, Kazakhstan
Сообщений: 69

Re: Проблема с Eloquent

lieroes пишет:

Задача не очень ясна, но может я все таки угадал и одно из решений подходит? smile

$import_id = 1; // нужный тебе ID в таблице "import"
$import = Import::find($id);

// 1-ый вариант
$cash_id = 1; // нужный тебе ID в таблице "cash"
$cash = Cash::find($cash_id);
$cash->un = $cash->un - ($import->pay_un + $import->delivery_un + $import->amt);
$cash->save();

// 2-ой вариант
$cash_id = 1;
$cash = Cash::find($cash_id);
$cash_2 = Cash::create(array('un' => $cash->un - ($import->pay_un + $import->delivery_un + $import->amt));
$user = User::find(Auth::id());
$user->cashes()->save($cash_2);

спасибо

Изменено nemocoder (13.12.2014 15:17:52)

Не в сети

#6 13.12.2014 21:43:33

nemocoder
Откуда: Almaty, Kazakhstan
Сообщений: 69

Re: Проблема с Eloquent

lieroes пишет:

Задача не очень ясна, но может я все таки угадал и одно из решений подходит? smile

$import_id = 1; // нужный тебе ID в таблице "import"
$import = Import::find($id);

// 1-ый вариант
$cash_id = 1; // нужный тебе ID в таблице "cash"
$cash = Cash::find($cash_id);
$cash->un = $cash->un - ($import->pay_un + $import->delivery_un + $import->amt);
$cash->save();

// 2-ой вариант
$cash_id = 1;
$cash = Cash::find($cash_id);
$cash_2 = Cash::create(array('un' => $cash->un - ($import->pay_un + $import->delivery_un + $import->amt));
$user = User::find(Auth::id());
$user->cashes()->save($cash_2);



вот делаю так, отнимается

                                $cash_id = 36;
                                $cash = Cash::find($cash_id);
				$cash->un = $cash->un - (($order->pay_un + $order->delivery_un) * $order->amt);
				$user = Auth::user();
				
				$user->cashes()->save($cash);

для теста сойдет, теперь есть в таблице cash -> user_id не могу понять как получать cash по полю user_id

$user_id = Auth::user()->id;
$cash = Cash::find($user_id);//не работает и не должно вроде бы

Изменено nemocoder (13.12.2014 21:44:04)

Не в сети

#7 13.12.2014 21:53:18

Wide

Re: Проблема с Eloquent

nemocoder пишет:

теперь есть в таблице cash -> user_id не могу понять как получать cash по полю user_id

Cash::where('user_id', '=', $user_id)->get()

А лучше узнать про отношения http://laravel.com/docs/4.2/eloquent#relationships

#8 13.12.2014 22:12:51

nemocoder
Откуда: Almaty, Kazakhstan
Сообщений: 69

Re: Проблема с Eloquent

Wide пишет:
nemocoder пишет:

теперь есть в таблице cash -> user_id не могу понять как получать cash по полю user_id

Cash::where('user_id', '=', $user_id)->get()

А лучше узнать про отношения http://laravel.com/docs/4.2/eloquent#relationships


ну так вот с отношением модели Cash и User привязываю счет к пользователю теперь пытаюсь обновлять привязанный счет


насчет where пробывал ругается на поля un, delivery_un pay_un

Изменено nemocoder (13.12.2014 22:19:23)

Не в сети

#9 15.12.2014 15:58:35

Re: Проблема с Eloquent

Оба решения должны выдавать одинаковый результат.

$user = User::find(Auth::id());
$cashes = $user->cashes; // в модели пользователя должно быть указано отношение "cashes" $this->hasMany('Cash').

Ниженаписаный код 100% должен работать, там нечему выдавать ошибку.

$cashes = Cash::where('user_id', '=', $user_id)->get()

Не в сети

#10 18.12.2014 16:32:14

nemocoder
Откуда: Almaty, Kazakhstan
Сообщений: 69

Re: Проблема с Eloquent

lieroes пишет:

Оба решения должны выдавать одинаковый результат.

$user = User::find(Auth::id());
$cashes = $user->cashes; // в модели пользователя должно быть указано отношение "cashes" $this->hasMany('Cash').

Ниженаписаный код 100% должен работать, там нечему выдавать ошибку.

$cashes = Cash::where('user_id', '=', $user_id)->get()

Да спасибо, разобрался.  smile

Изменено nemocoder (18.12.2014 16:32:32)

Не в сети

Подвал раздела