#5 Model 만들기 ~laravel×AWS로 게시판을 만들자~

laravel×AWS로 게시판을 만들자



본 기사는 laravel×AWS의 제5회입니다.
만든 사이트 : h tps://ゔぃbぇ. jp

【참조】
1. 완성형 이미지
2. AWS 서버 구축(공사 중)
3. 서버에 laravel을 도입하여 RDS와 제휴(공사 중)
4. 데이터베이스 구축
5. Model 만들기
6. 컨트롤러 작성
7. 좋아요 기능 구현
8. 라우팅 구현

MVC 모델 정보



손을 움직이기 전에 laravel의 사고방식을 알아야 하기 때문에 간단히 써 둡니다. laravel은 MVC 프레임워크라고 불리며, 「Model」 「View」 「Controller」의 3개에 역할 분담시키면서 web 표시시키고 있습니다.
싹둑 아래의 인식입니다.
Model: 데이터베이스(출처)
View: 표시 화면(상자)
Controller: 표시 화면에 가져올 데이터를 결정(감독)


인용 소스 : ㅡㅡㅜㅜㅜㅜㅜㅜㅜㅜ 네 t/우우 tmvc/

Eloquent ORM



데이터베이스 작업을 유연하게 할 수 있도록 Laravel에 포함된 기능입니다.
questions 테이블에서 모든 데이터를 검색하는 경우는 다음과 같습니다.
//通常の方法
use Illuminate\Support\Facades\DB;
$questions = DB::table('questions')->get();

//Eloquentを使った方法
use App\Question;
$questions = Question::all();

무엇을 위해 이런 기능이 있는가 하면 다른 테이블과의 연결을 할 필요가 나왔을 때 편리하게 되기 때문입니다. (나중에 설명하겠습니다)

laravel에서 Model 및 데이터베이스 테이블 이름을 결정하는 방법에는 규칙이 있습니다. 이것은 상당히 중요하며, 이 전제 하에서 laravel씨는 편리한 기능을 제공해 주고 있기 때문입니다. (몰라서 적당히 이름을 붙여 꽤 고생했습니다..)

Model명(단수형)⇔ 테이블명(복수형)


모델명
테이블 이름


질문
questions

Tweet
tweets

AnswerQuestion
answer_questions

AnswerTweet
answer_tweets

QuestionLike
quesition_likes

TweetLike
tweet_likes

AnswerQuestionLike
answer_question_likes

AnswerTweetLike
answer_tweet_likes


모델 작성 절차



먼저 다음 명령을 입력하십시오.
$php artisan make:model Question

그러면 앱 바로 아래에 Question.php가 만들어집니다.


이것만으로, 나머지는 컨트롤러로 모델을 선언하는 것만으로, 자동적으로 questions 테이블을 인식해 줍니다.
use App\Question;
$questions = Question::all();

테이블을 만드는 방법은 데이터베이스 구축 에서 소개하고 있는 대로입니다만, 하기 커멘드로 모델 작성과 동시에 일괄로 작성할 수 있습니다.
php artisan make:model Question -m

관계 정보



각 질문에 대한 좋아요의 수를 참조 할 때의 사고 방식을 설명합니다.
게시된 질문에 대한 정보는 questions 테이블에, 질문 내용에 대한 좋아요에 대한 정보는 question_likes 테이블에서 관리됩니다.
questions 테이블과 question_likes 테이블의 구조는 다음과 같습니다.
"questions 테이블의 id"와 "question_likes 테이블의 question_id"로 연결됩니다.

따라서 게시된 고민에 대한 좋아요의 수를 참조하려면 "연결 작업"을 해줄 필요가 있습니다.
이럴 때 모델을 잘 사용해주면 매우 편리합니다.
이번은 Question 모델에서 아래와 같이 끈을 붙였습니다.
hasmany, belongsTo에 대해서는 다른 것을 참조하십시오.
참고 : htps : // 모리 p로. 네 t / ぁ ゔ ぇ l - s ny ny-been gs 및 /

Question.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Auth;
use App\QuestionLike;

class Question extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class);
    }

    //ここで紐づけしてあげる
    public function question_likes()
    {
        return $this->hasMany(QuestionLike::class);
    }
}

이렇게 하면 Question::withCount('question_likes') 하는 것으로,
좋아하는 숫자 (question_likes 테이블의 특정 question_id 데이터 수)를 자동으로 계산합니다.

QuestionController.php
//function index部分のみ記載
class QuestionController extends Controller
{
    public function index()
    {
        $data = [];
        $likes = QuestionLike::all();
        //いいね数まで含めた変数 question_likes_count
        $questions = Question::withCount('question_likes')->orderBy('created_at', 'desc')->paginate(10);
        //ユーザ名前を引っ張ってくる
        $users = Question::with('user:id,name')->get();
        $data = [
            'questions' => $questions,
            'likes' => $likes,
            'users' => $users,
        ];

        return view('test.nayami', $data);
    }

(以下略)

좋은 웹페이지 즐겨찾기