Laravel по-русски

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

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

#1 Re: Laravel 6/7/8/9/10 » Получить данные для пользователя из другой таблицы » 22.10.2020 23:51:18

Здраствуйте!
Что мне надо сделать, я написал в скриншоте.
Вот скриншот (https://prnt.sc/v4un4o)
В тинкер все показывает нормально.

root@ubuntu:/var/www/www-root/data/www/sitr.ru# php artisan tinker
Psy Shell v0.10.4 (PHP 7.4.11 — cli) by Justin Hileman
>>> App\Models\User::first();
=> App\Models\User {#4007
     id: 1,
     name: "MOK4SS",
     created_at: "2020-10-18 22:47:31",
     updated_at: "2020-10-18 22:47:31",
     auth: "STEAM_0:1:449661230",
   }
App\Models\Shop {#3294
     id: 1,
     name: "MOK4SS",
     auth: "STEAM_1:1:449661230",
     money: 99678789,
   }

При попытке

$points = Auth::User()->shop->money;
>>> $points = Auth::User()->shop->money;
PHP Notice:  Trying to get property 'shop' of non-object in /var/www/www-root/data/www/site.rueval()'d code on line 1
PHP Notice:  Trying to get property 'money' of non-object in /var/www/www-root/data/www/site.rueval()'d code on line 1
=> null

Пожалуйста помогите.

#2 Laravel 6/7/8/9/10 » Получить данные для пользователя из другой таблицы » 22.10.2020 00:16:43

uonri
Ответов: 4

Доброго времени суток. Нужна ваша помощь. Пытаюсь получить для пользователя (таблицы users) по его authid, данные которые хранятся в другой таблице (в моем случаи points).
Делал так:
User.php

class User extends Authenticatable
{
    use HasFactory, Notifiable;

public function shop(){
    return $this->belongsTo(Shop::class,'auth');
}

Shop.php

class Shop extends Model
{
    use HasFactory;

    protected $table="shop_players";

    public function user(){
        return $this->HasMany(User::class);
    }
}

main.blade.php

{{Auth::user()->shop()->points}}

В результате получаю ошибку:
Undefined property: Illuminate\Database\Eloquent\Relations\BelongsTo::$points (View: /var/www/www-root/data/www/top-5ive.ru/resources/views/main.blade.php)
Где была допущена ошибка?

#3 Laravel 5.x » Laravel 5.7 - Проверка на существование страницы » 24.10.2018 20:59:21

uonri
Ответов: 2

Доброго времени суток.
Нужна помощь,совет,пинок.
Пытаюсь сохранить аватар каждого пользователя в отдельную папку с его ID.
Но каждый раз вылезает ошибка "mkdir(): File exists".


  public function update_avatar(Request $request){

        $user_id = Auth::user()->id;
        $path = mkdir('/images/avatars/'.utf8_decode($user_id),0755,true);
        if (!file_exists($path)) {
            mkdir($path, 0755, true);
        }
        else
        {
    
        }
        if($request->hasFile('avatar')){

            $avatar = $request->file('avatar');
            $filename = md5(time()) . '.' . $avatar->getClientOriginalExtension();
            Image::make($avatar)->resize(300, 300)->save( public_path('/images/avatars/'.$path.'/'.$filename ) );

            $user = Auth::user();
            $user->avatar = $filename;
            $user->save();
        }

        return redirect('home');

Laravel 5.7.0
Apache - php |2.4 - 7.2.9

#4 Laravel 5.x » Laravel 5.7 - Белая страница » 04.10.2018 20:18:48

uonri
Ответов: 1

Добрый день.
Сделал CRUD по этойинструкции
В итоге когда перехожу на страницу /products, то она просто пустая! Делал тестовые страницы - работают. В чем может быть проблема?
Права все настроены.

#5 Laravel 5.x » Ошибка Property [news_id] does not exist on this collection instance » 05.09.2018 02:02:30

uonri
Ответов: 2

Добрый день, прошу помощи. Осваливаю Laravel и столкнулся с такой ошибкой
Property [news_id] does not exist on this collection instance.
news_id - id Новости в базе.
Код контроллера

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Foundation\Validation\ValidatesRequests;
use App\Http\Requests\createNewsRequest;
use App\News;
use DB;
use Image;
class NewsController extends Controller
{
    use ValidatesRequests;
    public function index()
    {
       $news = News::all();
        return view('news.index', ['news' => $news]);
    }

    public function create()
    {
         
        return view('news.create');
    }

    public function store(createNewsRequest $request)
    {

       News::create($request->all());
        return redirect()->route('news.index');
    }

 
    public function show( $id)
    {

    }


    public function edit($id)
    {
        $news = News::find($id);
        return view('news.edit',['news'=>$news]);
    }

    public function update(Request $request, $id)
    {
        $this->validate($request,[
            'news_title'=>'required',
            'news_description'=>'reqired',
            'news_fulltext'=>'reqired'

        ]);  
        $news = News::find($id);
          $news->fill($request->all());
          $news->save();
        return redirect()->route('news.index');

    }

    public function destroy($id)
    {
        //
    }
}

Маршрутизация

Route::get('news',  'NewsController@index')->name('news.index');
Route::get('news/add',  'NewsController@create')->name('news.create');
Route::post('news/store',  'NewsController@store')->name('news.store');
Route::post('news/{id}',  'NewsController@show')->name('news.show');
Route::post('news/{id}/edit',  'NewsController@edit')->name('news.edit');
Route::post('news/{id}/update',  'NewsController@update')->name('news.update');

вьюшка news.edit

@extends('layouts.app')
@section('content')
    <div class="container">
        <div class="row">
            <div class="col-sm-12">
                <h3>Редактировать новость - {{$news->news_id}}</h3>
            </div>
        </div>
        

         @if($errors->any())
           <div class="alert alert-danger" role="alert">
                @foreach($errors->all() as $error)
              
                <li>{{ $error }}</li>

                @endforeach
                </div>
            @endif
        {!! Form::open(['route'=>['news.update',$news->news_id],'method'=>'PUT']) !!}
        <form class="form-group">
		
            <label>Название новости</label>
            <input type="text" placeholder="" name="news_title" class="form-control" value="{{$news->news_title}}">
            <label>Краткое описание</label>
            <input type="text" placeholder="" name="news_description" class="form-control" value="{{$news->news_description}}" >
            <label>Полное описание</label>
            <textarea class="form-control" name="news_fulltext" id="FormControlTextareaNews" cols="40" rows="10" value="{{$news->news_fulltext}}"></textarea>
            <label>Обложка новости</label>
            <input type="file" class="form-control-file" name="news_img_title">

            <input type="hidden" name="_token" value="{{ csrf_token() }}">

            <button type="submit" class="btn btn-outline-info" >Публикация</button>
        </form>
        {!! Form::close() !!}
    </div>
    <div class="panel"></div>
@endsection

Вьюшка news.index

@extends('layouts.app')
@section('content')
    <div class="container">
        <div class="row">
            <div class="col-sm-12 sm-page">
                <h3>Новости</h3>
                <a class="btn btn-outline-info" href="{{route('news.create')}}">Добавить новость</a>
				<a class="btn btn-outline-info" href="{{route('news.edit',$news->news_id)}}">Редактировать новость</a>
				<a class="btn btn-outline-info">Удалить новость</a>
            </div>
                @foreach ($news as $news)
                <div class="col-sm-6 col-md-6">
                    <div class="panel">
                        <div class="card mb-3">
                            <img class="card-img-top" src=".../100px180/" alt="Card image cap">
                            <div class="card-body">
                                <h5 class="card-title">{{ $news->news_id }}</h5>
                                <h5 class="card-title">{{ $news->news_title }}</h5>
                                <a href="" class="card-text">{{ $news->news_description }}</a>
                                <p class="card-text"><small class="text-muted">{{ $news->created_at }}</small></p>
                            </div>
                        </div>
                    </div>
                </div>
                @endforeach
            </div>

    </div>
    @endsection

#6 Laravel 5.x » При загрузке аватара - ошибка Internal Server Error » 30.01.2018 11:26:39

uonri
Ответов: 1

Добрый день! При загрузке аватара, ошибка

The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at webmaster@servgame.ru to inform them of the time this error occurred, and the actions you performed just before this error.
More information about this error may be available in the server error log.

Контроллер

<?php 
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use Auth;
use Image;
 
class UserController extends Controller
{
    //
    public function profile(){
        return view('profile', array('user' => Auth::user()) );
    }
 
    public function update_avatar(Request $request){
 
        // Handle the user upload of avatar
        if($request->hasFile('avatar')){
            $avatar = $request->file('avatar');
            $filename = time() . '.' . $avatar->getClientOriginalExtension();
            Image::make($avatar)->resize(300, 300)->save( public_path('/images/avatars/' . $filename ) );
 
            $user = Auth::user();
            $user->avatar = $filename;
            $user->save();
        }
 
        return view('profile', array('user' => Auth::user()) );
 
    }
}

вьюшка

            <img src="/images/avatars/{{ $user->avatar }}" style="width:150px; height:150px; float:left; border-radius:50%; margin-right:25px;">
            <h2>{{ $user->name }}' - личный кабинет</h2>
            <form enctype="multipart/form-data" action="/profile" method="POST">
                <label>Update Profile Image</label>
                <input type="file" name="avatar">
                <input type="hidden" name="_token" value="{{ csrf_token() }}">
                <input type="submit" class="pull-right btn btn-sm btn-primary">
            </form>

#7 Laravel 5.x » Не работает вывод из бд » 23.01.2018 23:05:03

uonri
Ответов: 3

Добрый день! Помогите пожалуйста.
Поставил Laravel 5.5
Вывожу записи из бд но они не выводятся!
Все настройки с подключением я произвел.

Сделал простую функцию в контроллере

public function admins()
    {
        $users = DB::select('select * from users');

        return view('pages.admins.show', ['users' => $users]);
    }

Во вьюшку прописал

 @extends('layouts.app')
 @section('content')
@foreach ($users as $user) {
    echo $user->name;
}
@endforeach
 @endsection

в итоге выводиться:

{ echo $user->name; } { echo $user->name; } { echo $user->name; }

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