トップページ⇒php
1001コメント316KB

【PHP】フレームワーク CakePHP 6ホール目【v1.2】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/03/09(月) 10:55:37ID:3PTy4GqZ
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです。

※sage推奨
※日本語マニュアルURLを貼るときは、http://book.cakephp.org/ja/view/1/ のようにしましょう(末尾のエンコードされたタイトル部分は不要)

■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
the Bakery
http://bakery.cakephp.org/
CheatSheet (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf

■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
http://book.cakephp.org/ja
0153nobodyさん2009/04/07(火) 20:13:46ID:???
>>152
鬱せーカス
0154nobodyさん2009/04/07(火) 20:21:23ID:???
コントローラーが多い場合どうしてる?
フォルダで階層化してもclass名とか衝突するからうざいよね。
0155nobodyさん2009/04/07(火) 20:36:59ID:???
クラス名の衝突なんて起こったことないわ
そもそもフレームワークの枠組みの中でしかクラス作らないし
0156nobodyさん2009/04/07(火) 21:15:02ID:???
Folderモデルとか作ろうと思ったら、コアのFolderクラスと衝突するね。
コアのクラスにはCake〜とかプレフィックス付けといてくれればいいのに。
0157nobodyさん2009/04/07(火) 23:56:01ID:???
すみません
paginateのcompornentを使ったときに、
group byで纏めたデータが何件あったのか、sqlで書くところの
from *, count(data) as countみたいのをやりたいのですが、
どういう項目に書けばいいのでしょう??
0158nobodyさん2009/04/08(水) 00:20:31ID:???
>>156
こっちが適当に名前かえるしかないね。
フレームワークはそういう規約的な知識は求められても仕方が無い。
0159nobodyさん2009/04/08(水) 03:47:51ID:???
>>154
フォルダで階層化なんて普通するの?
俺そんなことやらないけど。
コントローラー作りすぎなんじゃないの?
0160nobodyさん2009/04/08(水) 03:53:25ID:???
作りすぎたところで名前が被るとかおかしい

名前が同じなら同じコントローラにすればいいし
0161nobodyさん2009/04/08(水) 04:12:52ID:???
コントローラ名というかクラス名がコアで使われてるのとかぶっちゃうんでしょ。
俺も前に添付ファイルを扱おうと思って
「File」モデルとか作ろうと思ったら作れなくてちょっと悩んだことあるw
つってもかぶりそうなクラス名はFile、Folder、Page、Configureぐらいじゃないかな?
0162nobodyさん2009/04/08(水) 04:15:54ID:???
それコントローラの増加と関係ないじゃん
0163nobodyさん2009/04/08(水) 05:47:30ID:???
containで、任意のフィールドで結合するにはどうすれば?
0164nobodyさん2009/04/08(水) 06:25:51ID:???
俺はテーブル名にプレフィックス付けるからモデル名が被ったことなんかないな。
0165nobodyさん2009/04/08(水) 06:56:54ID:???
cakephpは予約語一覧とかでてないんだっけ?
0166nobodyさん2009/04/08(水) 13:00:36ID:???
みんなフリーワード検索とかどう対応してんの?
全文検索したいんだけど。スフィンクスは使いたくないんだよね。

CAKEだけで全文検索をスマートにやるやり方を!!
0167nobodyさん2009/04/08(水) 13:02:29ID:???
>>149

views/layouts/以下に、default.ctpを作って、好きなようにHTMLを書く。
その、default.ctpが優先的に呼ばれるようになる。
0168nobodyさん2009/04/08(水) 13:50:09ID:MhIiLyHN
>>166
LIKE句じゃ駄目ずらか?
0169nobodyさん2009/04/08(水) 14:42:57ID:???
>>166
DBのを使ってます
0170nobodyさん2009/04/08(水) 14:50:25ID:???
>>168
LIKE検索より数十倍高速な全文検索
というフレーズにあこがれてるんです><
0171nobodyさん2009/04/08(水) 16:53:26ID:???
いやだからデータベースにデータが入っている以上
データベースのアクセス速度は越えられないわけで
0172nobodyさん2009/04/08(水) 17:01:13ID:???
>>171
MySQLならLIKE検索とFULLTEXT_INDEXを使った検索では何十倍も速度が違うぞ。

>>166
>>CAKEだけで全文検索をスマートにやるやり方を!!
NamazuなりLuceneなりを使うしかないんじゃない?
0173nobodyさん2009/04/08(水) 17:16:31ID:???
誰もMySQLとは言ってないので
というか汎用的なものじゃないとフレームワーク使う意味ないので
0174nobodyさん2009/04/08(水) 17:16:53ID:???
>>172
ですよねー。
でもレンタルサーバ等でそういったものを
インストール出来ない環境が多いんでなんとかしたいんですよね。

今さくっとNgramで全文検索用作ったけどinodbとmyisamが混じって気持ち悪いし
トランザクション効かないしで><
0175nobodyさん2009/04/08(水) 17:25:03ID:???
>>173
全文検索の無い主要なRDBなんてあるとおもってるの?
LIKE検索なんて比較対象じゃないわ
0176nobodyさん2009/04/08(水) 17:26:12ID:???
ちなみにLIKE検索は、前方一致しかインデックスが使われない。
○○%は速くても
%○○や
%○○%はシーケンシャルアクセスになりオンデマンドサービスで使えるものじゃない
0177nobodyさん2009/04/08(水) 17:27:30ID:???
で、俺はセナっていうMySQL用全文検索エンジン使ってる。
レンタル鯖で入れられないならRDB標準のを使えばそれまでだろ。

標準のはテーブル越しのインデックスが作れなかった気がしたがな
0178nobodyさん2009/04/08(水) 17:36:18ID:???
>>173
>>172
0179nobodyさん2009/04/08(水) 18:11:52ID:???
これでおk

$ret = `find . -type f | xargs grep あああ`;
0180nobodyさん2009/04/08(水) 18:12:55ID:???
>>178
質問者はMySQLなんて一言も言ってないのにMySQLの話をし出したから
誰もMySQLとは言ってないという指摘になったわけで
0181nobodyさん2009/04/08(水) 18:52:51ID:???
>>180
> >>178
> 質問者はMySQLなんて一言も言ってない
からこそ、RDBMSの具体例としてMySQLを挙げたんじゃないか?

君は集合の概念があまりわかってないみたいだね。
0182nobodyさん2009/04/08(水) 19:47:21ID:???
MySQLだろうとなんだろうと全文検索はある
0183nobodyさん2009/04/09(木) 00:24:09ID:GNSodjfY
しかし日本語の全文検索はというと
0184nobodyさん2009/04/09(木) 00:50:39ID:???
あるかどうか知りたいなら調べてきたら?
0185nobodyさん2009/04/09(木) 09:35:38ID:???
>>180
後半のこと
0186nobodyさん2009/04/09(木) 19:23:23ID:???
自分で作ったスクリプトもvendorsに入れて使っていいですよね?
0187nobodyさん2009/04/10(金) 01:41:28ID:TR2k1lyd
そうさ明日からお前が vendor of the ship
0188nobodyさん2009/04/10(金) 09:36:51ID:???
実践本買った
おすすめ
0189nobodyさん2009/04/10(金) 21:57:29ID:???
上のほうで話題になってたけど、
コアのクラスでモデル名と衝突しそうな
File、Folder、Page、Configure、
それぞれ、なにか代わりになるいい名前ないかな?

自作CMSに挑戦しようと思ったら、使えないモデル名ばっかりで
いっきにモチベーションが・・・
MyFile、MyFolderなんてのもカッコ悪いしなあ・・・

ConfigureはConfigurationでもいけるか。
PageはContentかな・・・?
0190nobodyさん2009/04/10(金) 22:15:51ID:???
Myのが正しい
と言うか本家のコアクラスで同じ事ができないのかを考えるべき
継承してAppつけるのも良い
01911892009/04/10(金) 22:27:15ID:???
>>189
いえ、ライブラリじゃなくて、モデル名なんですよ。
フォームに

name="data[MyFile][hoge]"

とか表示されるのは、なんかかっこ悪いので・・・

symfonyはコアのクラスにはsfってついてるのになぁ・・・
01921892009/04/10(金) 22:28:06ID:???
間違えました;
>>190 です。
0193nobodyさん2009/04/10(金) 23:01:54ID:???
>>189
File → Document
Folder → Directory
0194nobodyさん2009/04/10(金) 23:18:39ID:???
そういう言いかえをするくらいならMyの方が良い
意味的にはっきりしてる
0195nobodyさん2009/04/11(土) 02:37:51ID:1ZQJOiPg
Yourでもいいよね
Ourとか
0196nobodyさん2009/04/11(土) 13:10:59ID:???
>>188
この実践本いいよね。
安い中古商品でたら買う予定。出たら教えてチョ
09/4/8発売「CakePHPによる実践Webアプリケーション開発」3,150円
(264ページ。値段の割にチョイページ数少ない。SimpleTestの項、もう少しページ数を
割いてくれてる事を期待してたのにチョイ少ない。残念!)

09/3/14発売の「CakePHPによるWebアプリケーション開発」2,940円も安い中古商品で出た
ら買チャオ  現在2,690円(2,350+340)あり。どうしようかな?買チャオかな?
0197nobodyさん2009/04/11(土) 13:12:35ID:???
いま箱根でやってる合宿もいいよね。
ttp://d.hatena.ne.jp/yandod/
4名のEthna工作員が潜入してんだ。
ttp://d.hatena.ne.jp/sotarok/20090410/1239325405
0198nobodyさん2009/04/12(日) 08:50:57ID:???
pagenateのパラメータ指定をモデルに設置したいのですが、何か良い方法はありますか?

わざわざコントローラに
$this->pagenateでパラメータを指定すると行数が増えてしまいますし、
データの取得はなるべくモデルでしたいと思いまして。
0199nobodyさん2009/04/12(日) 08:57:33ID:???
そういえば$this->paginate()と言うメソッドと
$this->paginateと言うプロパティがあるんだな。
これじゃあ、$this->paginate()の関数ポインタ使う場合どうしたら?とか思ってしまう。

ところでモデルからコントローラを使う手段は無かったと思うから
やるならコンポーネントだと思う
0200nobodyさん2009/04/12(日) 09:05:50ID:???
>>199
パラメータのほうは Controller::paginateParam とかにしてほしいね。
ぱっと見、わかりにくいし。
というか、findみたいに、毎回指定する方法じゃだめだったんだろうか?

>>198
モデルからコントローラをインポートすればできそうだけど、
そこまで無理をする必要はないかと。
02012002009/04/12(日) 09:25:56ID:???
ところで、上のほうで書いたんだけど、まだ解決しないので・・・

findのfieldsのなかでCountとかSumを使うと
戻り値のモデル名のところが「0」になっちゃうよね。

http://cakephp.blog16.jp/index.php/2009/03/06/p88
このページを参考に、
COUNT(*) AS Post__countみたいに指定してみたんだけど、
うまくPostに入ってくれない・・・

なにか良い方法ないかしら?
0202nobodyさん2009/04/12(日) 10:21:50ID:???
>>198
pagenateなんか自前でやってるわ
0203nobodyさん2009/04/12(日) 10:27:59ID:???
paginateを一々指定したくないと言うならこんな方法も考えられる
1.app_controllerでmyPaginate()を定義、paginate()をラップ
2.myPaginate()内でModel->paginateParamを取得する
3.各モデルにpaginateParamを定義

ただ、paginateのパラメータはモデル毎じゃなくてコントローラ毎に発生するものだと思うけどね。
もしやりたいというならこういう設計もあると言う事で。
0204nobodyさん2009/04/12(日) 10:44:26ID:???
>>202
用意されてるのに、わざわざ自前でやる理由を知りたいなぁ。
もしかして、ログイン処理とかも自前?

>>203
>>paginateのパラメータはモデル毎じゃなくてコントローラ毎に発生するものだと思うけどね。
同意見ですね。
ほかで使いまわすことも少ないだろうし。
02052032009/04/12(日) 11:25:52ID:???
やるとしても、myPaginate()で
orderとかlimitが指定されていなかった場合に自動的に補完する、と言う程度が良いと思う。
コントローラ側から上書き可能な形にしておけば、やって損と言う事は無いと思う。

あまりコード量は減らないし構造が複雑化するからお勧めしないけどね。
0206nobodyさん2009/04/12(日) 14:46:32ID:???
>>199
ありがとうございます。
paginate用コンポーネントにpaginateのプロパティを書いて
$this->コンポーネント名->メソッドで呼び出すことにしました。
コントローラーがすっきりして良いですね。
02071992009/04/12(日) 14:50:45ID:???
俺だったらinitialize()でcontroller->paginateに規定値をセットして
コントローラではそのままcontroller->paginate()を呼び出すかな
0208nobodyさん2009/04/12(日) 14:51:35ID:???
ペジネートの機能の読み込まれるタイミングによってはinitializeじゃなくstartupかも
0209nobodyさん2009/04/13(月) 07:04:51ID:???
>>204
202じゃないけどログイン処理は自前でやってるよ。
他は全てライブラリやコンポーネント使うけど、authコンポーネントは苦手。
0210nobodyさん2009/04/13(月) 07:36:02ID:???
FW使うのが目的になってるよなw
0211nobodyさん2009/04/13(月) 07:47:40ID:???
AuthもFWだけどね
MVCの仕組みだけと言うべきかな

Authは最新版なら有用だと思う
というか自前でセキュリティホールの無い認証機構作るとかめんどくさすぎるから
0212nobodyさん2009/04/13(月) 09:32:33ID:???
>>210
それは誰に対していってるの?
全部Cakeの機能で賄おうとしてる人に対して?

私は >>211 に同意です。
0213nobodyさん2009/04/13(月) 12:58:49ID:???
>>209

> authコンポーネントは苦手。

その気持ち分かります。
以前、Authコンポを使って、グループ毎にログイン後のアクセス画面を変えるというのを作ったけど、
loginRedirectプロパティを書き換えたページ振り分けが上手くいかなくて苦しんだ。
※最初のユーザをログアウトして、別のユーザでログインすると何故か最初のユーザの画面が表示されてしまう...

結局、loginRedirectのプロパティ値は、Sessionに含まれ続けるという事を知って、
ログアウト毎にセッションをクリアすることで上手くいくと思ったのだが、上手く行かず...
結局、autoRedirectしないようにして、グループ情報を確認後に改めてリダイレクトするようにして対応した...orz

0214nobodyさん2009/04/13(月) 13:49:00ID:???
皆さんはCakePHPのパフォーマンスをどんな具合で上げていきますか。
特にパラメータによって頻繁に情報が変わる検索ページとか。
0215nobodyさん2009/04/13(月) 16:02:37ID:???
>>201
fieldsでグループ化のカラムを書くと、なぜかidも出そうとしてSQLエラーになった。
$params = array(
'fields' => array(
'type',
'COUNT(type) AS "Post__count"',
),
'group' => array('type'),
);

しょうがないからquery使った。
0216nobodyさん2009/04/13(月) 18:04:13ID:wqehV7U5
CakePHPをインストールしたんだが、何故かインストール時に
表示されるページにCSSが適用されない。
Apacheのドキュメントルート/cake/ 以下にインストールしたんだが、
ここにアクセスするとHTMLのCSSの読み込み部分が
href="/cake/css/cake.generic.css"
と、なって、
app/webroot/css/cake.generic.css
にも
cake/console/libs/templates/skel/webroot/css/cake.generic.css
にもならない。
baseUrlという変数の中身が鍵らしいというところまでは
分かったんだが、それ以上が何とも。
誰かご教示頼む。
02172162009/04/13(月) 18:54:34ID:???
とりあえずほっといてチュートリアル進めているうちに自己解決しました。
.htaccessがコピーされてないだけだった('A`)
0218nobodyさん2009/04/13(月) 22:52:24ID:???
>>210
わかる。フレームワークの機能をどうしても利用しようとして、少しのことでもこだわり過ぎて
逆に効率が悪くなるという。

>>213
気持ちわかってくれてうれしい。同じ人もいたんだ。絶対否定されると思ったけど^^

>>214
自分は3つくらいのサイトをcakephpで作ったけど、ひたすらプラグインにまとめてデザイン無しのページを作り、
それを元にして新たなサイトを構築していってる。
プラグインにまとめまくると普通のコントローラーやビューがごちゃつかないのでいいよ。
特にユーザーログイン、画像アップデート、プロフィールアップデートなどをプラグイン化しておくと、
新たなサイト作ったときもその機能を作らなくても良いので楽。

以前このスレで 慣れるとビヘイビアが多くなる って人がいたけど、今は自分もビヘイビアを多く使うようになってきた。
0219nobodyさん2009/04/13(月) 23:01:54ID:???
>>218
プラグイン多用しているということで聞きたいのですが、
たとえばユーザー管理の仕組みをUserプラグインにまとめると、
モデル名にプラグイン名がついて、UserUserモデルになってしまって不恰好なのですが、
どうされてますか?
他にもCommentプラグインのCommentCommentモデルなど・・・
とにかくモデル名が長くなってしまって困っているんですが・・・

あと、そのCake製のサイト見てみたいです。
・・・2chで晒すのはアレですかね?
0220nobodyさん2009/04/14(火) 09:12:22ID:???
>>219
218じゃないけど、Userみたいなのはプラグイン名にしない。
もうちょっとまとめたもの、例えばMeiboみたいなのを付ける。
0221nobodyさん2009/04/14(火) 12:23:38ID:???
CakePHPを始めたばかりです。
CakePHP 1.2.2.8120とsqlite3を使っています。
インストールには成功したのですが、チュートリアルを
http://book.cakephp.org/ja/view/330/
まで進めた後にインストールの確認ページを見ると、
Cake is NOT able to connect to the database.
というエラーがでてしまい、困っています。
/posts/index を見ても、
Error: Database table posts for model Post was not found.
と出てしまいます。
database.phpの設定は以下の通りです。
var $default = array(
         'driver' => 'sqlite'
         'connect' => 'sqlite_open',
         'persistent' => false,
         'host' => 'localhost',
         'login' => '',
         'password' => '',
         'database' => 'cake.db',
         'prefix' => '',
         'encoding' => 'utf8'
     );
どうかよろしくお願いします。
0222nobodyさん2009/04/14(火) 12:43:42ID:???
>>221

hostは空でいいよ
つまり、

'host' => '',
0223nobodyさん2009/04/14(火) 18:56:14ID:???
>>219
ug プラグインにしてる。で、あとはroutes.php でルーティング。
これだとパスとか関係ないのでイイと思う。逆にルーティングを使わないと
パス名長すぎてかっこわるくなるね。
02242212009/04/14(火) 21:27:15ID:???
>>222
hostsを空にしてみてもダメでした。
dbファイルが無いときはちゃんとdbファイルが作られて、
インストール確認ページに、
Cake is able to connect to the database.
と表示されるのですが、
このdbファイルにテーブルを手動で作ってやると、
Cake is NOT able to connect to the database.
に変わってしまいます。
ユーザはapacheのユーザですし、試しにdbファイルを
777にしてみてもダメでした。
どうかよろしくお願いします。
0225nobodyさん2009/04/14(火) 23:39:51ID:b4g3iQJt
つか、sqlite3ってまだ未サポートじゃなかったのかと思ってたがどうなんだ
02262212009/04/15(水) 12:57:21ID:???
>>225
とりあえず去年の2月の時期で未サポートという情報は見つけました。
手を抜かずにmysqlを使うことにします。
お騒がせいたしました。
0227nobodyさん2009/04/15(水) 13:53:06ID:???
http://cakephp.seesaa.net/article/117498131.html
0228nobodyさん2009/04/15(水) 15:27:53ID:???
>>227
機能をPHPモジュールで実装して
PHPのコンパイルオプションで選ぶようにするとか

あるいはyumのパッケージをAPIごとに分けて欲しいやつだけ入れるとか

そういう方法で対処するのが一番楽で高機能だと思うがな
0229nobodyさん2009/04/16(木) 14:44:00ID:???
もういや、以前NetBeansへのCakePHPフレームワーク対応の
話があったと思うんだけど、どうなったの?
0230nobodyさん2009/04/16(木) 21:11:24ID:???
もういや!
0231nobodyさん2009/04/16(木) 23:13:26ID:???
saveallしたあとで、バリデートのエラーを拾えないんですが
やり方を知っている方がいたら教えてください?

コントロール内で

$this -> Model -> saveall($data,array('validate' => 'first');

とした後、

$error = $this -> Model -> invalidFields();

としても、バリデートがエラーになっても$errorが空のままです。
saveにすると問題ないのですが、何故なんでしょうか?
saveallでバリデートエラーを拾いたい場合は、やっぱり関連する
各モデルごとにバリデートを繰り返しあてるしかないんでしょうか?
0232nobodyさん2009/04/17(金) 15:00:20ID:???
もういややわ。
0233nobodyさん2009/04/20(月) 22:02:02ID:???
>>221
こんなのがあったよ。

CakePHP1.2 で sqlite3 を使用するには
ttp://blog1.atcms.jp/chuno/index.php?UID=1236462644
0234nobodyさん2009/04/21(火) 15:14:47ID:???
実践本買ったけど、bakeばっかり使っててわかりづらい。
ちょっと前の勉強会だとbake使ってる人はほとんどいなかったのに、最近は違うのか?
0235nobodyさん2009/04/21(火) 15:18:56ID:???
bakeの何が分かり辛いんだ
というかモデル追加するたびに手書きでコントローラとか書いてたのか?
0236nobodyさん2009/04/21(火) 15:24:47ID:???
普段と違う開発手法だから慣れない感じ。
もちろん読みこめば何をやってるのかわかるんだけどさ。
自分は基本的にコードは手書きだよ。
0237nobodyさん2009/04/21(火) 15:26:55ID:???
基本的な使い方知るくらい5分かかるかどうかレベルだろ
0238nobodyさん2009/04/21(火) 15:31:48ID:???
いや、だからbakeで何をやってるかはわかるって。
ただ、普段の開発手法と違うから読みにくいというだけで。

普段Linux環境だからWindows環境で書かれてるのがわかりづらいとか、
そういうくらいのレベルの話だよ。
0239nobodyさん2009/04/21(火) 16:07:29ID:???
bakeにmvcひとつひとつ選択しないで
ぜんぶdefaultで、とにかく作成しちゃうモードがあればいいなとおもう
0240nobodyさん2009/04/21(火) 16:16:48ID:???
あるじゃん
0241nobodyさん2009/04/21(火) 17:49:53ID:JXH2p/YI
実践本、俺はbake使い過ぎてわからんというよりは、
scaffoldに固執しすぎてバッドハック的な事をしてるのが気になった。
cakeの仕様の変わりっぷりを考えると、後々まで使える手法じゃない可能性が高いし
0242nobodyさん2009/04/21(火) 17:51:19ID:???
Cakeのbakeは使えるがscaffoldは使えないな
0243nobodyさん2009/04/21(火) 18:53:24ID:???
scaffoldって初期開発時のテスト用で本番にはあまり使わないイメージがあるんだけど。
という、scaffoldのままでいいコントローラってあまりないよね。
0244nobodyさん2009/04/21(火) 21:03:12ID:???
App::importに対してunimport的なものってあるの?

そもそもimportで読み込んだコンポーネントってstartup()とか動作するのかな?
単にimportを呼び出したスコープ内でメソッドが使えるだけ?
0245nobodyさん2009/04/21(火) 21:19:09ID:???
コントローラからの読み込み以外では適宜startup呼ばないとだめなんじゃない?
0246nobodyさん2009/04/21(火) 21:38:59ID:???
そのようだった。
initialize()すら呼ばれないね。

コンポーネント内でApp::importした場合って、
initialize(&$controller)の$controllerにセットされないよね?
コンポーネント内ではimport出来ないの?
0247nobodyさん2009/04/21(火) 21:45:39ID:???
コントローラのcomponentsに登録されるのかと思ったけどただ単にPHP的にクラスを読み込んでるだけか
0248nobodyさん2009/04/21(火) 23:44:48ID:???
実践本3,150円(税込)が
Amazonで2,740円(=2,400+340)の中古本が出たので即購入。ラッキー
(会社で新品書籍を購入すると10%offという人多いのかなあ?うらやましい)
0249nobodyさん2009/04/22(水) 00:27:07ID:???
会社ってか昔の客先は組合の購買で買うと10%OFFだったな
協力会社の人も含めて
0250nobodyさん2009/04/22(水) 04:16:17ID:???
>>248
10%オフって・・・。
会社通して仕事の本買えば会社は全額経費になるのにひどい話だな。

俺が以前いた会社は全額経費で落としてくれた。
0251nobodyさん2009/04/22(水) 04:28:09ID:IoF1Kk6A
経費で買うとタダになるとでも思ってるのか?w
本当にこういう社会人がいたのか
ショックだ。
0252nobodyさん2009/04/22(水) 08:35:18ID:???
>>251
社会人というか経営者だけど。
別にタダになるとは言ってないだろ。
もう少し税金勉強してからいってくれよ。
■ このスレッドは過去ログ倉庫に格納されています