Рандом стринг от базата, който не се променя при рефреш

vinsbg

Registered
Здравейте,

Искам да покажа рандом стринг от една таблица, но веднъж, след като е показан стринга да не го променя повече при рефреш на страницата. Framework-a е Laravel 4.2
Това е, което имам в контролера:
Код:
public function view() {

    $view = View::orderByRaw("RAND()")->limit('1')->get();          

    return View::make('site.view', [
            'view' => $view
        ]);
}
Това имам във вюто си
Код:
@foreach($view as $rand) 
  {{ Form::open() }}
      {{ $rand['my_view'] }} 

       // няколко полета, които се попълват
       <button type="submit" class="btn btn-primary">Submit</button>
  {{ Form::clode() }}
@endforeach

Идеята е да покажа рандом стринг на потребителя, който той въвежда заедно с останалите полета и после това всичкото го записвам в базата.

Проблема идва от това, че когато потребителя събмитне формата реално се рефрешва страницата и може да покаже нов рандом стринг и да го обърка.
Пробвах нещо от сорта на
Session::put('view', $view); след заявката и Session::get('view'); във вюто, но пак си дава рандом стринг.
 
PHP:
if (Session::get('view')) {
 $view = Session::get('view');
}
else {
 $view = View::orderByRaw("RAND()")->limit('1')->get();
 Session::put('view', $view);
}
 
Добре пробвах така
Код:
public function view() {

    if (Session::get('rand_view'))  {

        $rand_view = Session::get('rand_view');
    }
    else
    {
           $view = View::orderByRaw("RAND()")->limit('1')->get();          

           $rand_view =  View::make('site.view', [
                  'view' => $view
            ]);
            
            Session::put('rand_view', $rand_view);
     }
      return $rand_view;
}

И получавам ERROR 500 .. и нищо в еррор лога.
 
PHP:
public function view() {

	if (Session::has('rand_view'))  {
		$rand_view = Session::get('rand_view');
	}
	else
	{
		$rand_view = View::orderByRaw("RAND()")->limit('1')->get();
		Session::put('rand_view', $rand_view);
	}
	return View::make('site.view', [
		'view' => $rand_view
	]);
}

Само че не мога разбера дали с View::orderByRaw се обръщаш към някакъв Model или към View фасадата?
 
eLite каза:
PHP:
public function view() {

	if (Session::has('rand_view'))  {
		$rand_view = Session::get('rand_view');
	}
	else
	{
		$rand_view = View::orderByRaw("RAND()")->limit('1')->get();
		Session::put('rand_view', $rand_view);
	}
	return View::make('site.view', [
		'view' => $rand_view
	]);
}

Само че не мога разбера дали с View::orderByRaw се обръщаш към някакъв Model или към View фасадата?
Model View, който съдържа в себе си само:
Код:
class View extends Eloquent {

	protected $table = 'views';
        protected $primaryKey = 'view_id';

    public $timestamps = false;
}
С твоята редакция получавам това във вюто си:
Код:
[{"__PHP_Incomplete_Class_Name":"View","timestamps":false,"incrementing":true,"exists":true}]

Edit: А това вече в error лога:
Cannot use object of type __PHP_Incomplete_Class as array
на луупа във вюто
Код:
@foreach($view as $rand) <-- тук

@endforeach
 
Трябва да сложиш alias на класовете ти, защото View се повтаря :)


Код:
use Illuminate\Support\Facades\View as ViewLaravel;
use Models\View as ViewModel;

И после:

Код:
public function view() {
	if (Session::has('rand_view'))  {
		$rand_view = Session::get('rand_view');
	} else {
		$rand_view = ViewModel::orderByRaw("RAND()")->limit('1')->get();
		Session::put('rand_view', $rand_view);
	}

	return ViewLaravel::make('site.view', [
		'view' => $rand_view
	]);
}
 

Back
Горе