Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Рекомендую прочитать книгу "Laravel: Code Bright". Возможно появится хотя бы базовое понимание.
присоединяюсь к теме прочитать книгу, так же есть как видео уроки так и текстовые по созданию сайта на laravel 4
к ним лучше приступать с базовыми навыками, читайте документацию. Удачи в начинаниях с laravel и Welcome
Сделай composer update, Создай базу,подключить её,
Сделай php artisan migrate. Что препятствует? Если что то не так в файле composer.json поменяй версию с 4.1.* на 4.2.*
Решено!!!!
$rating = DB::table('users')
->select(DB::raw('*, raiting, count_votes, ((LOG(POW(max(count_votes), 1/10),count_votes))+raiting)/2 as actual_raiting'))
->orderBy("actual_raiting")
->get();
спасибо чуваку со stackoverflow под ником lukasgeiter
Помогите понять что не так и что я не так делаю
есть код SQL
select @a:=POW(max(count_votes), 1/10) from users;
select id,name,raiting, count_votes, ((LOG(@a,count_votes))+raiting)/2 as actual_raiting from users order by actual_raiting desc ;
делаю так выдает ошибку синтаксиса
public function getRat()
{
$rating = DB::statement('select @a:=POW(max(count_votes), 1/10) from users;
select raiting, count_votes, ((LOG(@a,count_votes))+raiting)/2 as actual_raiting from users order by actual_raiting desc; ');
return $rating;
}
пробывал вот так но не получается не считает как нужно
$rating = DB::table('users')
->select(DB::raw('*, @a:=POW(max(count_votes), 1/10)
raiting, count_votes,
((LOG(@a,count_votes))+raiting)/2 AS actual_raiting'))
->orderBy("actual_raiting")
->get();
return $rating;
}%%%(php)
if( $upload_success ) {
echo "Ваш файл успешно загружен";
} else {
echo "Ошибка загрузки";
}
%%
аа это что ли)
так все же не работает
то есть работает так просто стоит можно сказать
в бд идет только название файла например avatar.jpg и все (
}%Ну ладно, уговорил))
%%(php)
if (Input::hasFile('image'))
{
$extension = Input::file('image')->getClientOriginalExtension();
$original = Input::file('image')->getClientOriginalName();
$upload_success = Input::file('image');
$filename = sha1(time().rand(000000000,999999999).time()).".{$extension}";
$upload_success->move("./uploads/",$filename);
if( $upload_success ) {
} else {}
}
%%
а можете до пинать варианты в
if( $upload_success ) {
} else {
}
}%Форму покаж ещё...
{{ Form::open(array('url' => 'api/v1/users/passenger', 'role' => 'form', 'class' => 'form-horizontal'))}}
<div class="form-group input-group" style="margin-left:1px;">
<span class="input-group-addon"><i class="fa fa-circle-o-notch" ></i></span>
<input type="text" class="form-control" placeholder="Ваше имя" required="true" name="name"/>
</div>
<div class="form-group input-group" style="margin-left:1px;">
<span class="input-group-addon"><strong>+7</strong></span>
<input type="text" class="form-control" placeholder="Моб. телефон" required="true" name="phone_number" size="10" maxlength="10" />
</div>
<div class="form-group input-group" style="margin-left:1px;">
<span class="input-group-addon">@</span>
<input type="email" class="form-control" placeholder="Email" required="true" name="email"/>
</div>
<div class="form-group input-group" style="margin-left:1px;">
<span class="input-group-addon"><i class="fa fa-lock" ></i></span>
<input type="password" class="form-control" placeholder="Пароль" required="true" name="password" />
</div>
<div class="form-group input-group" style="margin-left:1px;">
<span class="input-group-addon"><i class="fa fa-lock" ></i></span>
<input type="password" class="form-control" placeholder="Повторите пароль" required="true" name="password_confirmation"/>
</div>
<input type="file" class="filestyle" data-icon="false" name="image">
<small class="">Загрузите портретную фотографию</small>
<input class="btn btn-success" type="submit" value="Зарегестрироваться">
{{ Form::close() }}
Вообщем вопрос такой как мне пропихнуть загрузку изображения на серв, есть регистрационная форма, в этой же форме мне нужно
может кто сталкивался
public function postPassenger() {
$rules = User::$validation;
$validation = Validator::make(Input::all(), $rules);
if ($validation->fails()) {
return Redirect::to('api/v1/users/passenger')->withErrors($validation)->withInput();
}
$user = new User();
$user->fill(Input::all());
$id = $user->register();
return $this->getMessage("Регистрация почти завершена. Вам необходимо подтвердить e-mail, указанный при регистрации, перейдя по ссылке в письме.");
}
//////
User.php
public function register()
{
$this->password = Hash::make($this->password);
$this->activationCode = $this->generateCode();
$this->save();
Log::info("User [{$this->email}] registered. Activation code: {$this->activationCode}");
$this->sendActivationMail();
return $this->id;
}
Оба решения должны выдавать одинаковый результат.
$user = User::find(Auth::id()); $cashes = $user->cashes; // в модели пользователя должно быть указано отношение "cashes" $this->hasMany('Cash').
Ниженаписаный код 100% должен работать, там нечему выдавать ошибку.
$cashes = Cash::where('user_id', '=', $user_id)->get()
Да спасибо, разобрался.
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
Задача не очень ясна, но может я все таки угадал и одно из решений подходит?
$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);//не работает и не должно вроде бы
Задача не очень ясна, но может я все таки угадал и одно из решений подходит?
$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::find('un');
Это аналогично %%SELECT * FROM cash WHERE id = 'un'%%. Подозреваю, что это не то, что ты хочешь сделать.p.s: переименуй тему во что-то более подходящее.
получается он ищет id со значением un ? и так все ?
Задача такова нужно отнять от поля (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)
Спасибо. Кстати я тоже из Казахстана, Атырау
Круто) Я из Уральска, живу, работаю и учусь в Алмате
nemocoder, как в бд заносишь таблицу ? покажи код,тоже делаю такую фишку интересно.
легко
контроллер
.......
Excel::load(public_path().$dir.$filename , function($reader)
{
$result = $reader->get();
foreach ($result as $key => $value) {
//для проверки можешь с перва вывести так посмотреть берутся ли значения
//echo $value->date.'----'.$value->name.'----'.$value->adress_to.'----'.$value->operator.'<br>';
//Model->твоя модель
$data = Model::postAdd($value);
}
})->get();
//return Redirect::to('/io')->with('success', 'You have been importing xls');
модель
protected $table = 'твоя таблица';
protected $fillable = array(
'date',
'name',
'adress_to',
'operator',
);
public static function postAdd($exelData)
{
$post = Import::create([
'date' => $exelData['date'],
'name' => $exelData['name'],
'adress_to' => $exelData['adress_to'],
'operator' => $exelData['operator']
]);
return $post;
}
Сынок, обратной связи с MySQL не существует, на MsSQL такое можно реализовать на ActiveX.
Если хочешь сделать костыль на MySQL, рекомендую сделать под события отдельную таблицу, например, Events и писать туда события (лучше добавь триггеры которые сами при записи в определенные таблицы будут писать в Events).
А на фронтэнде в фоновом режиме, ajax скрипт до усеру читает Events.
Хотя мама может и ошибаться
ок ок
решение
роут
Route::post('/upload', 'ImportController@uploadFile');
контроллер
public function uploadFile()
{
$dir = '/uploads'.date('/Y/m/d/');
do {
$filename = str_random(30).'.xls';
} while (File::exists(public_path().$dir.$filename));
Input::file('file')->move(public_path().$dir, $filename);
Excel::load(public_path().$dir.$filename , function($reader)
{
$result = $reader->get();
do Something
})->get();
}
форма
{{ Form::open(array('url' => '/upload', 'action' => 'ImportController@uploadFile', 'method' => 'post', 'role' => 'form', 'class' => 'form-horizontal', 'files' => true)) }}
@include('temp/form')
<div class="form-group">
<div class="col-sm-2"> </div>
<div class="col-sm-5">
<button type="submit" class="btn btn-primary submit-button">Импорт</button>
</div>
</div>
{{ Form::close() }}
//form
{{ Form::label('file', 'Excel/XLS:') }}
{{ Form::file('file')}}
что я делаю не так ?
$dir = '/uploads'.date('/Y/m/d/'); do { $filename = str_random(30).'.xls'; } while (File::exists(public_path().$dir.$filename)); Input::file('file')->move(public_path().$dir, $filename); return Response::json(array('filelink' => $dir.$filename)); Excel::load(public_path().$dir.$filename, function($reader){ ---------- }
понял что совсем ни то, как правильнее сразу лоадить файл без загрузки на серв
что я делаю не так ?
$dir = '/uploads'.date('/Y/m/d/');
do {
$filename = str_random(30).'.xls';
} while (File::exists(public_path().$dir.$filename));
Input::file('file')->move(public_path().$dir, $filename);
return Response::json(array('filelink' => $dir.$filename));
Excel::load(public_path().$dir.$filename, function($reader){
----------
}
Это засунуть в модель
public function postAdd($exelData) { $post = SomeModel::create([ 'data' => $exelData['data'], 'name' => $exelData['name'], 'operatory' => $exelData['operatory'] ]); }
это в контроллер
public function actionIndex(){ Excel::load('public/upload/raim.xls', function($reader){ $result=$reader->select(array('data', 'name','operatory'))->get(); })->get(); $res = Model::postAdd($retust); return $res }
не работает
public function actionIndex()
{
Excel::load('public/upload/raim.xls', function($reader)
{
$result=$reader->select(array('data', 'name','operatory'))->get();
//var_dump($result);
})->get();
}
тут получается я открыл xls и выбрал нужные поля
как теперь их записать в таблицу из бд?
например из формы делается же так
public function postAdd() {
$data = Input::all();
$post = SomeModel::create($data);
}
Так что ни кто не может помочь?
http://www.maatwebsite.nl/laravel-excel/docs
кто нибудь использовал это?
мне нужно импорт/экспорт Excel файла а так же показать и возможность редактировать, у кого нибудь встречалась такая задача ?
}%Уведомлений у БД как таковых нет, нужно держать список последних выданных пользователю уведомлений и при каждом запросе страницы проверять нужные таблицы на новые записи и уведомлять о них, если они найдены.
спасибо за ответ